相关疑难解决方法(0)

R + ggplot:包含事件的时间序列

我是R/ggplot的新手.我想创建一个连续变量时间序列的geom_line图,然后添加一个由事件组成的图层.连续变量及其时间戳存储在一个data.frame中,事件及其时间戳存储在另一个data.frame中.

我真正想做的是像finance.google.com上的图表.在那些,时间序列是股票价格,并有"标志"来表示新闻事件.我实际上并没有绘制财务资料,但图表的类型是相似的.我试图绘制日志文件数据的可视化.这是我的意思的一个例子......

谷歌图表与事件

如果可取(?),我想为每一层使用单独的data.frames(一个用于连续变量观察,另一个用于事件).

经过一些试验和错误,这是我能得到的尽可能接近.在这里,我使用ggplot附带的数据集中的示例数据."经济学"包含一些我想绘制的时间序列数据,"总统"包含一些事件(总统选举).

library(ggplot2)
data(presidential)
data(economics)

presidential <- presidential[-(1:3),]
yrng <- range(economics$unemploy)
ymin <- yrng[1]
ymax <- yrng[1] + 0.1*(yrng[2]-yrng[1])

p2 <- ggplot()
p2 <- p2 + geom_line(mapping=aes(x=date, y=unemploy), data=economics , size=3, alpha=0.5) 
p2 <- p2 + scale_x_date("time") +  scale_y_continuous(name="unemployed [1000's]")
p2 <- p2 + geom_segment(mapping=aes(x=start,y=ymin, xend=start, yend=ymax, colour=name), data=presidential, size=2, alpha=0.5)
p2 <- p2 + geom_point(mapping=aes(x=start,y=ymax, colour=name ), data=presidential, size=3) 
p2 <- p2 + geom_text(mapping=aes(x=start, y=ymax, label=name, angle=20, hjust=-0.1, vjust=0.1),size=6, data=presidential)
p2
Run Code Online (Sandbox Code Playgroud)

我的尝试

问题:

  • 这对于非常稀疏的事件是可以的,但是如果它们有一个集群(通常发生在日志文件中),它就会变得混乱.是否有一些技术可以用来整齐地显示在短时间间隔内发生的一系列事件?我在考虑使用position_jitter,但这对我来说真的很难.谷歌图表将这些事件"标志"叠加在一起,如果它们有很多的话.

  • 我实际上不喜欢以与连续测量显示相同的比例粘贴事件数据.我宁愿把它放在facet_grid中.问题是所有facet都必须来自相同的data.frame(不确定是否为真).如果是这样,那似乎也不理想(或者我只是想避免使用重塑?)

graphing visualization r ggplot2

58
推荐指数
4
解决办法
2万
查看次数

按时间顺序排列的时间轴和格式日期

我是R和ggplot2的新手,我想知道如何使用R在给定时间生成时间线绘图点?我的日期也有些麻烦.(我不确定我是否应该将此作为两个问题发布,但是这里有).

我有一个数据框,其中年份和月份为YYYYMM格式的字符,两个人的名字和发生的事件.

像这样:

> data

YearMonth   Person1   Person2    Event
200606       Alice      Bob      event1
200606       Bob        Alice    event2
200608       Alice      Bob      event3
200701       Alice      Bob      event3
200703       Bob        Alice    event2
200605       Alice      Bob      event4
Run Code Online (Sandbox Code Playgroud)

日期最初是整数,我使用它转换为字符as.character().我想将其转换为格式化日期.我使用as.Date()并尝试了不同的方式来格式化日期.我最接近的是data$YearMonth <- as.Date(data$YearMonth,"%Y"),但这分别让所有2006xx和2007xx行的'2006-12-20'和'2007-12-20'.有没有办法做到这一点,以便我得到像'YYYY-MM'或'YYYY/MM'的东西?

我也尝试过data$YearMonth <- strptime(data$YarMonth, "%Y%m"),但那给了我<NA>价值.

但我的主要问题是时间表.

下图是我想要的格式:

http://www.vertex42.com/ExcelArticles/Images/timeline/Timeline-for-Benjamin-Franklin.gif

但x轴显示月份和年份(如2006-06,2006-07 ... 2007-06),以及标有Event,Person1和Person2的轴线.

我查看了'timeline'包,?timeline但是我的数据框没有时间段的数据(开始和结束日期).我只是有一个时间点(YearMonth).

我还尝试使用ggplot2 在ggplot2中绘制一个按时间顺序排列的时间轴.但是我没有y轴的位错,我希望事件线离开x轴.

注意:这是一个非常简化的示例,因为我在2006年6月到2007年6月期间有大约一千行.是否可以使用这么多数据制作时间轴?

任何帮助深表感谢.谢谢你的时间!

plot timeline r date-formatting

5
推荐指数
1
解决办法
7775
查看次数

将x或y轴与刻度标签一起移动到单个ggplot的中间(无刻面)

我在Excel中制作了以下图表:

在此输入图像描述

但后来我想我会用ggplot让它变得更漂亮.我到目前为止:

在此输入图像描述

如果你很好奇,数据基于我的回答,虽然这并不重要.该图是标准的ggplot2构造,具有一些预处理,并且通过中间的x轴的粗线是用p + geom_hline(aes(yintercept=0))(p是ggplot对象)实现的.

我觉得Excel图中的轴配置更好.它强调0线(当数据是金钱时很重要)并且因为你不必从底部一直跟随线条,因此更容易找到截距.这也是人们在纸上或纸板上绘图时绘制轴的方式.

也可以在ggplot中像这样移动轴吗?我不仅想要这条线,而且还要移动刻度线标签.如果有,怎么样?如果不是,是技术还是设计的原因?如果按设计,为什么做出决定?

plot r axes ggplot2

5
推荐指数
2
解决办法
2247
查看次数

有没有办法在python上制作时间轴?

好的,我会尝试更具体.我想创建一个如下所示的时间轴:

                    _____________________
                    |___________________|
_____________________
|___________________|

*       |  /         *       *
        | /
        |/________  

----------------------------------------------------->
                       time
Run Code Online (Sandbox Code Playgroud)

我想在这个时间表上堆积几样东西.基本上没有y轴,只是在底部运行的时间.我不知道怎么做这个,我似乎无法找到任何关于如何做的信息,所以我还没有尝试过任何东西.

python timeline matplotlib

-4
推荐指数
1
解决办法
1万
查看次数