2011-10-21 59 views
7

现在卡扎菲的40多年的规则已经结束,我想要建立一个时代线图与他那个时代的其他国家的时代。例如美国总统,德国总理等 因此,X轴将是时间,Y轴国家和时间轴分裂 - 在正确的时间范围内 - 显示尼克松,福特等美国时间线的最佳技术

正如我想学习R ,我宁愿使用该语言的解决方案,但有一种感觉,它不是最好的解决方案。对于这种或另一种免费解决方案的任何建议?

我也许应该补充一点,如果在R上的数据帧将开始

Country Boss TookCharge 

USA  Nixon 1969-01-20 
USA  Ford 1974-08-09 
Germany Brandt 1969-10-22 
Germany Schmidt 1974-05-16 
+3

有趣。你可以在你的时间表上标明西方何时停止了妖魔化卡扎菲国外化财产(在70年代和80年代被认为是十分邪恶的),并开始将他妖魔化为腐败,镇压,大屠杀等。 – MusiGenesis

+0

Google Docs Spreadsheets有一个时间线小工具,可以插入。这是非常挑剔,打破了比作品更多。我也很乐意看到这件事完成。R. R强大而灵活。 – Farrel

回答

5

这是ggplot一个简单的任务:

创建一些数据:

x <- data.frame(
    country = rep(c("USA", "Germany"), each=2), 
    boss = c("Nixon", "Ford", "Brandt", "Schmidt"), 
    start = as.Date(c("1969-01-20", "1974-08-09", "1969-10-22", "1974-05-16")) 
) 

使剧情:

library(ggplot2) 
ggplot(x, aes(x=start, y=country)) + 
    geom_line() + 
    geom_point() + 
    geom_text(aes(label=boss), hjust=0, vjust=0) + 
    xlim(c(min(x$start), max(x$start)+5*365)) # Add some space to right 

enter image description here

+0

谢谢你们。这使我走上了正轨。有没有一个可爱的方式来替代vjust,以便连续的名字可以落在线条的上方和下方。当长名字的领导者迅速相互接替,例如在80年代的苏联时,情节变得不可读 – pssguy

+0

@pssguy是的,你可以提供一个向量作为'vjust = ...'的参数 - 例如'vjust = c(0,1 )'应该工作,因为矢量回收规则(未测试)。 – Andrie

+0

感谢您的建议,但我得到了“设定美观时,它们可能只有一个值”的错误。尝试设置一个变量开关= C(0,1),然后VJUST =开关,但也没有工作。是否有可能创建一个vjust可以调用的ggplot之外的函数。我对这个方法有点朦胧 – pssguy

4

你可以构建一套稀疏,不规则的动物园或xts时间序列与每个组一个相关事件的注释(美国总统在一位,另一位大臣)。索引列将是日期,值将是字符注释。然后,您可以选择图表库。使用莱迪思,您可以将其分成每个组的一个面板。

或者你也可以建立一个单独的常规时间序列,他每次数据点都有一些虚假的值。用透明线绘制该图,只需设置基准图,然后添加注释即可。你可以使用abline或类似的。

另一种更快捷的方法可能是这 http://www.inside-r.org/packages/cran/googleVis/docs/gvisAnnotatedTimeLine http://code.google.com/apis/chart/interactive/docs/gallery/annotatedtimeline.html#Example

+1

Tavis。感谢您的建议。我正在玩googleVis选项,这可能是一个更好的网络解决方案,但R可以提供+1 – pssguy