我在R中创建了一个ggplot2图,其中一条线带有阴影置信区间。但是,图例显示错误的颜色和符号。使用scale_size_manual似乎无法解决问题。
情节:
输入数据:
my_example_data <- data.frame(Price = c(5,0,-5), Consumption = c(20,0,-20), Lower = c(17,-3,-21), Upper = c(21, 2, 23))
my_example_data.melt <- melt(my_example_data, id = "Price")
Price variable value
1 5 Consumption 20
2 0 Consumption 0
3 -5 Consumption -20
4 5 Lower 17
5 0 Lower -3
6 -5 Lower -21
7 5 Upper 21
8 0 Upper 2
9 -5 Upper 23
创建情节的代码:
ggplot(subset(my_example_data.melt, variable == "Consumption"), aes(Price,value,fill='Mean response'), linetype=1) +
geom_line(colour="#000000") +
coord_cartesian(xlim = c(-100, 100),ylim = c(-0.75, 1)) +
geom_ribbon(aes(ymin = subset(my_example_data.melt, variable == "Lower")$value, ymax = subset(my_example_data.melt, variable == "Upper")$value,fill = 'SD of response'),alpha=0.3, colour=NA) +
xlab("Change in relative price [Δ€]") +
ylab("Change in consumption [MW]") +
theme(legend.position="bottom", legend.direction="horizontal") +
xlab("Change in relative price [Δ€]") +
ylab("Change in consumption [MW]") +
scale_fill_discrete("")
是否有手动覆盖选项,用于更改绘图和图例的线型和颜色,而无需向融化的数据框添加其他信息?
答案 0 :(得分:0)
如果不使用融化数据,您会发现这更容易。
同时引用Remove extra legends in ggplot2,
可以在ggplot调用中设置或映射美学。
因此像
ggplot(my_example_data,aes(x=Price)) +
geom_ribbon(aes(ymin=Lower,ymax=Upper),fill='blue',alpha=0.5) +
geom_line(aes(y=Consumption))
或者如果你真的想要一个传奇,你可以使用scale_identity
ggplot(my_example_data,aes(x=Price)) +
geom_ribbon(aes(ymin=Lower,ymax=Upper,fill='blue'), alpha=0.5) +
geom_line(aes(y=Consumption)) +
scale_fill_identity(guide='legend', name = 'Your name', label = 'whatever')