【发布时间】:2015-06-29 20:05:34
【问题描述】:
我在与 ggplot2 中的标签交互时遇到问题。
我有来自两个实验的两个数据集(温度与时间),但记录在不同的时间步长。我已经成功地合并了数据框,并使用 reshape2 库中的 melt 函数将它们长时间地绘制在同一个图中。
因此,初始数据帧如下所示:
> d1
step Temp
1 512.5 301.16
2 525.0 299.89
3 537.5 299.39
4 550.0 300.58
5 562.5 300.20
6 575.0 300.17
7 587.5 300.62
8 600.0 300.51
9 612.5 300.96
10 625.0 300.21
> d2
step Temp
1 520 299.19
2 540 300.39
3 560 299.67
4 580 299.43
5 600 299.78
6 620 300.74
7 640 301.03
8 660 300.39
9 680 300.54
10 700 300.25
我是这样组合的:
> mrgd <- merge(d1, d2, by = "step", all = T)
step Temp.x Temp.y
1 512.5 301.16 NA
2 520.0 NA 299.19
...
并将其放入 ggplot2 的长格式中:
> melt1 <- melt(mrgd3, id = "step")
> melt1
step variable value
1 512.5 Temp.x 301.16
2 520.0 Temp.x NA
...
现在,我想例如做一个值分布的直方图。我是这样做的:
p <- ggplot(data = melt1, aes(x = value, color = variable, fill = variable)) + geom_histogram(alpha = 0.4)
我的问题是当我尝试修改此图的图例时,我不知道该怎么做!我遵循了 R Graphics Cookbook 书中的建议,但我没有运气。
我尝试过这样做,例如(更改图例的标签):
> p + scale_fill_discrete(labels = c("d1", "d2"))
但我只是创建一个“新”图例框,就像这样
甚至完全删除图例
> p + scale_fill_discrete(guide = F)
我刚刚得到这个
最后,这样做也无济于事
> p + scale_fill_discrete("")
同样,它只是添加了一个新的图例框
有人知道这里发生了什么吗?看起来我实际上是在修改另一个 Label 对象,如果这有任何意义的话。我已经查看了此站点中的其他相关问题,但我没有发现有人和我有同样的问题。
【问题讨论】:
-
@Henrik 我回滚了您的编辑,因为解决问题的最巧妙方法实际上是以更直接的方式处理数据(使用
rbind),而不是摆弄标签传奇。总的来说,我认为,使用 ggplot2 的最佳方式是整理输入数据中的变量名称、因子级别等,而不是尝试更改数据格式中的内容。它使绘图代码更具可读性。