我有一个脚本可以创建散点图和我的数据中的两个条形图。一切正常,但是当我尝试更改散点图的颜色时,它不起作用,它们仍然是标准的。
我想从条形图中选择红色和灰色(分别为#f40009和#8e8f90)并使用它们为散点图着色,但它不起作用。
有没有人知道为什么会发生这种情况以及如何解决这个问题?
散点图的代码如下:
lof <- 2
days <- 3
plot2 <-ggplot( data3, aes( CE11000_ERLOS, Z_UCS))+
geom_point(aes(colour=ifelse( data3$LOF>lof & data3$Z_LAST_DAYS<days & data3$CE11000_ERLOS>100,"#8e8f90","#f40009")), size = 3)+
labs(list(y = "Unit cases", x = "Gross sales revenue"))+
ggtitle(bquote(atop(.("Visualization of Outliers"), atop(italic(.(country)), ""))))+
scale_colour_discrete(guide = guide_legend(title = NULL), labels = c("Outliers", "Not outliers"))+
theme(plot.title = element_text(hjust = 0.5))+
geom_text(aes(label = ifelse( data3$LOF>lof & data3$Z_LAST_DAYS<days,paste( data3$Z_CDOW, data3$CE11000_BUDAT2,sep = "\n "),""),hjust=1.05,vjust=1), size = 3.5)+
scale_y_continuous(labels = comma)+
scale_x_continuous(labels = comma)
print(plot2)
数据是:
LOF Z_LAST_DAYS CE11000_ERLOS Z_UCS Z_CDOW CE11000_BUDAT2
3.1 1 996789 21195 Thursday 20170126
1.01 23 11912948 210839 Wednesday 20170104
1.4 22 14322767 257269 Thursday 20170105
1.01 21 11817447 185197 Friday 20170106
1.66 18 7906971 153807 Monday 20170109
结果是scatter
答案 0 :(得分:1)
在这一行
geom_point(aes(colour=ifelse( data3$LOF>lof & data3$Z_LAST_DAYS<days & data3$CE11000_ERLOS>100,"#8e8f90","#f40009")), size = 3)
您将在color语句中放置的级别映射到(默认)颜色,方法是将它们放入aes
调用中。
如果你从aes
电话中取出你的颜色陈述,你应该得到实际的颜色。
比较例如:
不是粉红色的:
ggplot(iris, aes(Sepal.Width, Sepal.Length)) +
geom_point(aes(colour="pink"))
粉红色:
ggplot(iris, aes(Sepal.Width, Sepal.Length)) +
geom_point(colour="pink")
或者,在您的情况下:
geom_point(colour=ifelse( data3$LOF>lof & data3$Z_LAST_DAYS<days & data3$CE11000_ERLOS>100,"#8e8f90","#f40009"), size = 3)
或者,您可以根据@Adam Quek的评论使用scale_colour_manual
更改默认颜色。
答案 1 :(得分:1)
更改ggplot2
中默认颜色的示例代码data <- iris[iris$Species == "setosa" | iris$Species == "virginica", c(1:2,5)]
levels(data$Species)
droplevels(data$Species)
data
plot <- ggplot(data, aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point(aes(color = Species))
下图生成默认颜色
plot
您可以添加scale_color_manual()
来更改默认颜色
plot + scale_color_manual(
values=c("setosa" = "darkgrey","virginica" = "red"))