我在与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"))
但我只是创造了一个新的&#34;传奇盒子,就像这样
甚至完全删除传奇
> p + scale_fill_discrete(guide = F)
我刚拿到这个
最后,这样做也没有帮助
> p + scale_fill_discrete("")
同样,它只是添加了一个新的传奇框
有谁知道这里发生了什么?看起来好像我正在制作另一个Label对象,如果这有任何意义的话。我已经查看了本网站中的其他相关问题,但我还没有发现有人遇到与我相同的问题。
答案 0 :(得分:4)
删除aes(color = variable...)
以删除属于aes(color = ...)
的缩放。
ggplot(data = melt1, aes(x = value, fill = variable)) +
geom_histogram(alpha = 0.4) +
scale_fill_discrete(labels = c("d1", "d1")) # Change the labels for `fill` scale
第二个图包含aes(color = variable...)
。在这种情况下,颜色将在直方图箱周围绘制彩色轮廓。您可以关闭比例,以便只有一个图例,即fill
ggplot(data = melt1, aes(x = value, color = variable, fill = variable)) +
geom_histogram(alpha = 0.4) +
scale_fill_discrete(labels = c("d1", "d1")) +
scale_color_discrete(guide = F) # Turn off the color (outline) scale
答案 1 :(得分:1)
最直接的做法是根本不使用reshape2
或merge
,而是使用rbind
数据框:
dfNew <- rbind(data.frame(d1, Group = "d1"),
data.frame(d2, Group = "d2"))
ggplot(dfNew, aes(x = Temp, color = Group, fill = Group)) +
geom_histogram(alpha = 0.4) +
labs(fill = "", color = "")
如果您想按组改变alpha:
ggplot(dfNew, aes(x = Temp, color = Group, fill = Group, alpha = Group)) +
geom_histogram() +
labs(fill = "", color = "") +
scale_alpha_manual("", values = c(d1 = 0.4, d2 = 0.8))
另请注意,position
的默认geom_histogram
为"stacked"
。除非您使用geom_histogram(position = identity)
,否则条形图不会重叠。