下面是一个数据集的例子:
structure(list(time = structure(c(19327, 19358, 19389, 19417,
19448, 12053), class = "Date"), branques = c("index", "index",
"index", "index", "index", "Indústries extractives"), values = c(-1.1,
4, -1.6, 1.1, -6.5, 20)), row.names = c(252L, 253L, 254L, 255L,
256L, 269L), class = "data.frame")
我想创建一个热图;所以x轴应该是2022年1月的time
,y轴应该是branques
(按字母顺序排列)。它应该用values
填充,所以对于每个branques
,它的数字越负,它应该越红,当它是正数时,它应该是绿色的。
它应该看起来像这样:
到目前为止,我试过:
ggplot(varIPI_branques_CAT_long, aes(x = time, y = branques, fill=values)) +
geom_tile() +
scale_x_date(expand=c(0,0), breaks = "2 months", labels=date_format("%b %y"),
limits = c(as.Date("2022/01/01"), NA)) +
scale_y_discrete(expand=c(0,0)) +
labs( x = "% de variació interanual",
y = " ") +
# Override default fill
scale_fill_distiller(type = "seq",
palette = "Reds",
limits = c(min(varIPI_branques_CAT_long$values), max(varIPI_branques_CAT_long$values)),
direction = 1,
na.value = "#FBF2F0")
我得到了这个:
但是,如何限制此Map的样本,使其仅使用2022年1月以后的值?而且,月与月之间不应该有间隔。
1条答案
按热度按时间yruzcnhs1#
(1)对于发散调色板,取
type = 'div'
并选择发散调色板。我强烈建议反对红色/绿色,因为它对那些有红色/绿色色盲的人不友好。红色/蓝色可能是更好的选择。如果你真的想要红色/绿色,你想使用
scale_fill_gradient2
,这是非常可定制的。(2)我最初误解了这个问题。我认为这个问题是由每个月的天数变化引起的(差距发生在超过30天的月份)。因此,它需要一些技巧(以及brettjausn建议的预过滤)来修复。