ggplot2用wesanderson包报错:连续值传入离散刻度的解决方法
问题解决方案
1. 修复Continuous value supplied to a discrete scale错误
错误根源是你的cty列是连续数值类型,但你使用了针对离散分类变量的scale_color_manual刻度,两者不匹配导致报错。同时你之前的df[-222,]没有赋值,这行代码不会实际修改原数据框。
修改后的完整代码:
library(ggplot2) library(wesanderson) df <- mpg[, c("displ","cyl", "cty", "hwy" )] df <- df[-222,] # 必须赋值,才会删除第222行 # 将cty转为因子,明确告知ggplot这是离散分组 df$cty <- as.factor(df$cty) # 生成对应20个分组的连续调色板 pal <- wes_palette(20, name = "Zissou1", type = "continuous") ggplot(df, aes(x=hwy, y=displ, group=cyl)) + geom_point(aes(color=cty)) + scale_color_manual(values= pal)
2. 合并5个4色调色板为20色调色板
完全可以实现,直接用c()函数把每个调色板的颜色向量拼接即可,这5个调色板的颜色风格差异明显,不会出现大量重复:
# 提取目标调色板的颜色向量 gb1 <- wes_palette("GrandBudapest1") gb2 <- wes_palette("GrandBudapest2") mr1 <- wes_palette("Moonrise1") mr2 <- wes_palette("Moonrise2") chev1 <- wes_palette("Chevalier1") # 合并为20色的新调色板 combined_pal <- c(gb1, gb2, mr1, mr2, chev1) # 直接替换之前的pal使用即可 ggplot(df, aes(x=hwy, y=displ, group=cyl)) + geom_point(aes(color=cty)) + scale_color_manual(values= combined_pal)
内容的提问来源于stack exchange,提问作者lroca
相关产品推荐
相关产品推荐

