2017-04-04 44 views
2

做任何ggplot2向导知道如何使this看起来更直观?具体来说,我在每个时间段的开始和结束时都注意确切的日期(例如,对于Zhenla,酒吧将以注释说550公元开头,最后注明说明802AD)。ggplot2:在R中创建视觉上直观的时间轴

另一方面,我查看了注释文档,没有发现任何视觉上的吸引力。然而,我知道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")) 

注:“颜色”不与值对应得到N-它更是一个占位符的图形代码:

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") 
+0

“更直观”不是一个明确的编程规范。如果这不是一个编程问题,那么它不属于Stack Overflow。也许尝试某种设计论坛。 – MrFlick

+0

这是一个建议:不要改变y轴的比例。保持所有部分高度相同。 – yeedle

回答

2

这不是一个真正的编程问题,但我认为它仍然很有趣,因为它展示了如何玩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)) 
+0

请介意包含结果图表吗?这将有助于更好地评估您的答案。 – Uwe

+0

我认为这看起来非常棒,而且你是对的,更直观。我认为这不会是因为它在X轴上太“忙”了,但那根本不是太忙。 –