gpt4 book ai didi

R ggplot 热图使用 geom_tile() : how to sort by year and show all years in y-axis?

转载 作者:行者123 更新时间:2023-12-04 08:28:26 27 4
gpt4 key购买 nike

在学习了 Hadley 的书并在 SO 上搜索之后,我创建了一个由年和月矩阵组成的热图,颜色根据时间序列变量的百分比变化而变化。热图和我用来获取它的代码如下所示。我还有一些我自己无法解决的问题。

1) 如何对矩阵进行排序/排序,以便 y 轴中的年份从最早到最晚?在这种情况下,我希望年份从 1995 年的顶部开始,并在 y 轴的底部继续到 2011 年。

2)我希望每年都显示在 y 轴上,但它仅每 5 年显示一次。我认为我的代码中的 scale_y_date 会处理这个问题,但它似乎没有影响。如何强制每年显示 y 轴?

3)我怀疑这仍然在 ggplot2“待办事项”列表中,但是有什么方法可以使 x 轴标签(在这种情况下是 Jan、Feb、Mar、Apr 等)显示在图的顶部而不是比底部?

require(ggplot2)
mydf <- data.frame(date=seq(as.Date("1995/1/1"), by="month", length.out=203),yoy=runif(203, min=-1, max=1))
p_heat <- ggplot(mydf, aes(x=month(date,label=TRUE),y=year(date), fill = yoy, label = sprintf("%1.1f%%", 100*yoy),size=10)) +
scale_y_date(major="years", format="%Y") +
geom_tile() + geom_text(aes(size=10)) +
scale_fill_gradient2(low = "red", high = "green") +
scale_x_discrete(expand=c(0,0)) +
scale_y_continuous(expand=c(0,0)) +
opts(title="Value (%)") +
opts(panel.grid.minor=theme_blank()) +
opts(axis.ticks = theme_blank()) +
opts(panel.grid.major=theme_blank()) +
opts(axis.title.y = theme_blank()) +
opts(axis.title.x = theme_blank()) +
opts(legend.position = "none")
p_heat

enter image description here

最佳答案

对于前两点,您可以替换scale_y_continuousscale_y_reverse将最早的年份放在首位,并明确指定休息时间和标签。

p_heat +  scale_y_reverse(breaks=1995:2011, labels=1995:2011, expand=c(0,0) )

关于R ggplot 热图使用 geom_tile() : how to sort by year and show all years in y-axis?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8784095/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com