图例中的线型不正确,R中的ggplot2

时间:2014-08-11 22:46:24

标签: r ggplot2

我在R中创建了一个ggplot2图,其中一条线带有阴影置信区间。但是,图例显示错误的颜色和符号。使用scale_size_manual似乎无法解决问题。

情节:

Line with confidence interval

输入数据:

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("")

是否有手动覆盖选项,用于更改绘图和图例的线型和颜色,而无需向融化的数据框添加其他信息?

1 个答案:

答案 0 :(得分:0)

如果不使用融化数据,您会发现这更容易。

同时引用Remove extra legends in ggplot2

可以在ggplot调用中设置或映射美学。

  • aes(...)中定义的美学从数据映射,并创建一个图例。
  • 通过在aes()之外定义美学,也可以将美学设置为单个值。

因此像

 ggplot(my_example_data,aes(x=Price)) + 
   geom_ribbon(aes(ymin=Lower,ymax=Upper),fill='blue',alpha=0.5) +  
   geom_line(aes(y=Consumption)) 

enter image description here

或者如果你真的想要一个传奇,你可以使用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') 

enter image description here