首页 > 解决方案 > 如何自定义绘图上点的颜色和形状?

问题描述

我在下面创建了一个要绘制的数据框

Sample <- c("A1","B1","C1","A1","B1","C1")
X <- c(1,1,2,4,3,5)
Y <- c(2,3,1,5,4,6)
df <- data.frame(Sample, X, Y)
df
 Sample X Y
1     A1 1 2
2     B1 1 3
3     C1 2 1
4     A1 4 5
5     B1 3 4
6     C1 5 6

ggplot(data = df, aes(x = X, y = Y, label = Sample)) +
  geom_point()

但是,我希望能够自定义每个点的颜色和形状。例如,我将如何使我的所有“A1”点都是红色和圆形,所有“B1”点都是蓝色和方形,所有“C1”点都是绿色和三角形?

标签: r

解决方案


通常最简单的方法是映射这些美学,然后使用以下方法定义它们的值scale_*_manual

ggplot(data = df, aes(x = X, y = Y, label = Sample, shape = Sample, color = Sample)) +
  geom_point(size = 3) +
  scale_shape_manual(values = c("A1" = 16, "B1" = 15, "C1" = 17)) +
  scale_color_manual(values = c("A1" = "red", "B1" = "blue", "C1" = "green"))

在此处输入图像描述

也可以将每个组指定为一个图层,但这很快就会变得很麻烦,并且不适合拥有一个图例:

ggplot(df, aes(X, Y)) +
  geom_point(data = filter(df, Sample == "A1"), color = "red", shape = 16, size = 3) +
  geom_point(data = filter(df, Sample == "B1"), color = "blue", shape = 15, size = 3) +
  geom_point(data = filter(df, Sample == "C1"), color = "green", shape = 17, size = 3)

推荐阅读