我有一个df_Filtered
的df,看起来像这样:
Country Region Sales Year Colour
Germany Berlin 2000 2000 #FF0000
Germany Hamburg 1500 2001 #33CC33
Germany Kiel 2150 2002 #00FF00
UK London 1200 2000 #CC0000
UK York 1300 2001 #FFFF33
UK Leeds 2000 2002 #339900
Japan Tokyo 500 2000 #66CC00
Japan Kyoto 750 2001 #990099
我想绘制每个地区的数据以及每年的销售价值:
ggplot(df_Filtered, aes(x = Year, y = Sales, colour = Region, scale_y_continuous(breaks = 1), size=mysize, labels=as.matrix(df_Filtered_regions))) + geom_line() +
labs(x = "Years", y = "Sales", title = NULL) +
scale_x_continuous(breaks = c(2000, 2001, 2002)) +
scale_size(range = c(1, 4), guide="none") +
theme(panel.background = element_blank()) +
theme(legend.position="bottom") +
scale_color_discrete(name=NULL) +
theme(plot.background = element_rect(colour = "black", size = 1)) +
theme(axis.line = element_line())
请注意,我还有一个向量,用于表示要在实际数据中使用的行的大小。在实际代码中,代表平均国家/地区价值的行较粗,但为了简化起见:
Size = 2
df_Filtered$mysize <- rep(Size, nrow(df_Filtered))
我想将Colour
中df_Filtered
列中的颜色用于绘图中的线条。我该怎么做呢?
(我以前尝试通过自动过程分配颜色a,但是效果不太好:Different colour palettes for different series ggplot)
答案 0 :(得分:2)
请在以后的问题中尽力提供有效的代码,尤其是因为ggplot2构造在许多地方严重不正确。我也强烈建议您不要使用为最终绘图选择的颜色。最后,十进制的ascii代码字符32(即“”)是免费的,我怀疑采用并坚持使用一种代码格式样式将有助于避免将来出现某些绘图构造错误。
您可以使用I()
使用预生成的geom组件颜色,该颜色标记为“ asis
”列,通知ggplot2仅使用指定的值。
library(ggplot2)
read.csv(text="Country,Region,Sales,Year,Colour
Germany,Berlin,2000,2000,#FF0000
Germany,Hamburg,1500,2001,#33CC33
Germany,Kiel,2150,2002,#00FF00
UK,London,1200,2000,#CC0000
UK,York,1300,2001,#FFFF33
UK,Leeds,2000,2002,#339900
Japan,Tokyo,500,2000,#66CC00
Japan,Kyoto,750,2001,#990099", stringsAsFactors = FALSE) -> xdf
xdf$mysize <- rep(2, nrow(xdf))
ggplot(xdf) +
geom_line(
aes(
x = Year, y = Sales, group = Country,
colour = I(Colour), size = mysize
)
) +
scale_x_continuous(breaks = c(2000, 2001, 2002)) +
scale_y_continuous(breaks = 1) +
scale_size(range = c(1, 4), guide = "none") +
labs(x = "Years", y = "Sales", title = NULL) +
theme(axis.line = element_line()) +
theme(panel.background = element_blank()) +
theme(plot.background = element_rect(colour = "black", size = 1)) +
theme(legend.position = "bottom")
ggplot2绘图惯用法在使用时变得更容易理解。练习是必不可少的。
您想要一个图例,但是您没有遍历如何使用手动色标。我们将从您指定的数据中构建命名向量:
manual_scale_colors <- setNames(xdf$Colour, xdf$Region)
然后删除I()
并重新添加手动比例调用:
ggplot(xdf) +
geom_line(
aes(
x = Year, y = Sales, group = Country,
colour = Region, size = mysize
)
) +
scale_x_continuous(breaks = c(2000, 2001, 2002)) +
scale_y_continuous(breaks = 1) +
scale_color_manual(values = manual_scale_colors) +
scale_size(range = c(1, 4), guide = "none") +
labs(x = "Years", y = "Sales", title = NULL) +
theme(axis.line = element_line()) +
theme(panel.background = element_blank()) +
theme(plot.background = element_rect(colour = "black", size = 1)) +
theme(legend.position = "bottom")