如何调整ggplot中各点之间的平行距离?

时间:2016-02-26 14:04:20

标签: r ggplot2

我有一个长表作为数据框:

date         group       value
02-01        A1          0.1
02-01        A1          0.05
02-02        A1          0.02
....
02-01        A2          -0.1
02-01        A2          0.02
...
02-01        A25         0.01
...

如您所见,共有25个组,每个组都有许多零值。现在我有三个要求绘制一个多图(每组一个),其值为x轴,日期为y轴:

  1. 绘制图表时会过滤零值。

  2. 这些点按时间顺序显示,但从不在同一垂直线上,即使它们在同一天。

  3. 点的距离(平行)相等。避免某些点非常接近而其他点不接近的情况。

  4. 我尝试过这种方法:

    ggplot(df%>%filter(value != 0.0), aes(x= row.names(df%>%filter(value != 0.0)),y = value)) + geom_line() +facet_wrap(~group)
    

    但得到geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic?警告和空图表。你能帮我解决这个问题吗?谢谢!

    编辑:

    现在我已经过滤了零值,并在日期框架内添加了一个索引以使其连续:

    date         group       value   index
    02-01        A1          0.1     1
    02-01        A1          0.0     2
    02-02        A1          0.0     3
    ....
    02-01        A2          -0.1    1
    02-02        A2          0.0     2
    ...
    02-01        A25         0.0     1
    ...
    

    然后我尝试了:

    ggplot(df_filter, aes(x= index,y = value, color = date)) + geom_point() +facet_wrap(~group) 
    

    然而,我得到的是:

    enter image description here

    很难看到value在不同group中的趋势。如何调整不同情节的x-axis范围以清楚地显示? 此外,为什么颜色全部为灰色,而我将其设置为date,因此假设同一天的点应该具有相同的颜色。 感谢。

1 个答案:

答案 0 :(得分:0)

颜色的解决方案:

ggplot(df_filter, aes(x= index,y = value, color = as.character(date)) + geom_point() +facet_wrap(~group)