Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的彩色时间线图_R_Plot_Data Visualization_Timeline - Fatal编程技术网

R中的彩色时间线图

R中的彩色时间线图,r,plot,data-visualization,timeline,R,Plot,Data Visualization,Timeline,我正在移动应用程序中可视化用户触摸交互。我想在一维时间线中绘制它们,该时间线按动作类型进行颜色编码 i、 例如,我的两个变量是时间(在x轴上以毫秒为单位)和触摸类型(用于对线条进行颜色编码)。颜色应该能够重复 理想情况下,情节应该是这样的,我已经找到了类似的东西,但我想知道是否还有更好的东西 有没有其他使用R的方法可以让我这样做?没有工作示例,我建议您使用ggplot2包(以及ggfortify),它允许您将变量(此处:动作类型)映射到颜色。一个常见的选择是大小(点/点)或厚度(线) 此外,您可

我正在移动应用程序中可视化用户触摸交互。我想在一维时间线中绘制它们,该时间线按动作类型进行颜色编码

i、 例如,我的两个变量是时间(在x轴上以毫秒为单位)和触摸类型(用于对线条进行颜色编码)。颜色应该能够重复

理想情况下,情节应该是这样的,我已经找到了类似的东西,但我想知道是否还有更好的东西


有没有其他使用R的方法可以让我这样做?

没有工作示例,我建议您使用
ggplot2
包(以及
ggfortify
),它允许您将变量(此处:动作类型)映射到颜色。一个常见的选择是大小(点/点)或厚度(线)


此外,您可能会发现时间序列
ts
对象(请参阅)非常有用。但是,这不是您感兴趣的打印数据类型的要求。祝你好运

我有基本R方法的工作原理。它有点黑,但经过一些调整,应该可以很好地工作。我已经消除了对
数据表
时间线
ggplot
包的依赖,选择使用
多边形
功能

df <- data.frame(Set=c("x","y","z","x","y","z","x","y","z","x","y","z","x"),
       StartDate=c(1380708900,1402963200,1420070400,1421280000,1410912000,1396310400,1397520000,1418860800,1404172800,1405382400,1395100800,1412121600,1413331200),
       EndDate=  c(1395099900,1404171900,1421279100,1430985600,1412120700,1397519100,1402962300,1420069500,1405381500,1410911100,1396309500,1413330300,1418859900))

df$StartLabel <- as.POSIXct(df$StartDate,tz="UTC",origin="1970-01-01")
df$Set <- as.factor(df$Set)
这将笨拙地循环您的值,并为每次观察的每个时间段绘制一个彩色多边形

for(i in 1:nrow(df)){
  polygon(x=c(rep(df$StartDate[i],2), rep(df$EndDate[i],2)), 
          y=c(0.6,0.4,0.4,0.6), col=rainbow(3, alpha=0.75)[df$Set[i]],
          border=rainbow(3)[df$Set[i]])
}
然后我添加轴(这可能需要一些调整,具体取决于您希望显示的日期信息的多少)

axis(1, labels=df$StartLabel, at=df$StartDate)
然后在绘图顶部设置图例

legend('top', horiz=TRUE, 
       c('Test set', 'Training set', 'Validation set'), 
       pch=16, col=rainbow(3), bty='n', x.intersp=1.5, title='Group')

希望这会有所帮助。

如果您想绘制矩形(输入略有不同),也可以使用
rect
,但这并不重要。
rect(df$StartDate[i],0.4,df$endDate[i],0.6)
将以与使用通用多边形函数类似的方式绘制矩形。谢谢,太棒了。使用这个非常简单且解释得很好的答案,我能够准确地完成我想要的。
legend('top', horiz=TRUE, 
       c('Test set', 'Training set', 'Validation set'), 
       pch=16, col=rainbow(3), bty='n', x.intersp=1.5, title='Group')