ggplot2: 在R中创建直观的时间轴图表

5
有没有ggplot2的专家能够使这个this更加直观易懂?具体地,在每个时间段的开头和结尾进行注释,注明确切日期(例如,对于真腊,柱形图应该以注释“550 AD”开始,并以注释“802AD”结束)。
另外,我已经查看了注释文档,并没有找到任何视觉上令人愉悦的东西。然而,因为我熟悉ggplot2及其相关软件包,所以我相信一定有一个吸引人的选择。
如果你们有任何其他关于美化它的建议,我也很感兴趣。
以下是数据:
cambodia = data.frame(Period = c("Funan", "Chenla/Zhenla","Khmer Empire","Dark Ages of Cambodia"),StartDate = c(-500,550,802,1431), EndDate = c(550,802,1431,1863), Color = c("lightblue","lightgreen","lightyellow","pink"))

注意:“颜色”与给定值不对应 - 它更像是图形代码的占位符:
g2 <- ggplot() +
geom_segment(data=cambodia, aes(x=StartDate, xend=EndDate, y=Period, yend=Period, color=Color), linetype=1, size=2) +
scale_colour_brewer(palette = "Pastel1")+
xlab("Time")+
ylab("Periods of History")+
theme_bw() + theme(panel.grid.minor = element_blank(), panel.grid.major =   element_blank()) + theme(aspect.ratio = .2)
g2 + theme(legend.position="none")

“更直观”并不是一个明确的编程规范。如果这不是一个编程问题,那么它就不应该出现在Stack Overflow上。或许可以尝试一些设计论坛。 - MrFlick
这里有一个建议:不要改变y轴刻度。保持所有的段高度相同。 - yeedle
1个回答

6

这不是一个真正的编程问题,但我认为它仍然很有趣,因为它展示了如何利用ggplot的可能性。我会将所有部分放在同一高度,并使用x轴来显示您感兴趣的主要日期(虽然我不确定文本应该放在哪里):

enter image description here

 ggplot(data=cambodia) +
  geom_segment(aes(x=StartDate, xend=EndDate, y=0., yend=0., color=Period) , linetype=1, size=4) +
  scale_colour_brewer(palette = "Pastel1")+
  scale_y_continuous(limits=c(0,0.5))+
  scale_x_continuous(limits=c(-500,2000),  breaks= c(seq(0,2000,by=1000), cambodia$StartDate, cambodia$EndDate[4]))+
  xlab("Time")+
  ylab("Periods of History")+
  theme_bw() + theme(panel.grid.minor = element_blank(), panel.grid.major =   element_blank(), axis.title.y=element_blank(),axis.text.y=element_blank(),  axis.ticks.y=element_blank()) +
  theme(aspect.ratio = .2)+
  theme(legend.position="none") + 
  geom_text(aes(x=StartDate-100 + (EndDate- StartDate)/2,y=0.05,label=Period,angle=25,hjust=0))

请问您能否包含生成的图表吗?这将有助于更好地评估您的答案。 - Uwe
我觉得这看起来非常好,而且你是对的,更加直观。我之前想它不会这样,因为x轴上会太“繁忙”,但实际上并不会很繁忙。 - E.O.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接