如何用ggplot将同一列内两类物种按不同颜色绘制散点图
问题原因
你之前的代码存在以下问题导致颜色映射失效:
- ggplot调用拼写错误,将
ggplot写为Flowerplot - 数据框名称前后不一致,混用
Flower和flowers - 在
geom_point中重复设置color参数,覆盖了aes()中声明的颜色映射 - 存在括号未闭合的语法错误
- 不需要用
Flower$Species这种跨数据框引用列的写法,指定数据框参数后aes()内直接写列名即可
基础实现:自动按物种分类着色
直接在全局aes中指定color = Species即可自动区分不同物种的点颜色:
library(ggplot2) FlowerPlot <- ggplot(Flower, aes(x = Height, y = Rate, color = Species)) + geom_point(size = 7) + theme_bw() + theme(text = element_text(size = 15)) # 输出图像 FlowerPlot
自定义单个物种颜色方案
如果需要单独给玫瑰、雏菊指定自定义颜色,使用scale_color_manual即可实现,不需要你提到的Flower$Species$Rose写法,直接匹配分类名赋值即可:
library(ggplot2) FlowerPlot <- ggplot(Flower, aes(x = Height, y = Rate, color = Species)) + geom_point(size = 7) + # 引号内的分类名需要和你Species列的实际取值完全一致,可自行调整对应颜色 scale_color_manual(values = c("Rose" = "red", "Daisy" = "yellow")) + # 如果Species列是中文分类,改为: # scale_color_manual(values = c("玫瑰" = "红色", "雏菊" = "黄色")) + theme_bw() + theme(text = element_text(size = 15)) # 输出图像 FlowerPlot
内容的提问来源于stack exchange,提问作者RStudio_Student
相关产品推荐
相关产品推荐

