You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 09:42:49