数据与公共样式
iris 已收进 Tessera Toy。Petal length 与 Petal width 能让三个物种形成清楚但并非完全无重叠的点群,比 Orange 的重复测量结构更适合演示分组散点。
library(ggplot2)
library(ggpubr)
library(biopalette)
d <- read.csv("content/tessera/data/csv/iris.csv")
d$Species <- factor(
d$Species,
levels = c("setosa", "versicolor", "virginica")
)
walter_white2 <- get_palette("walter_white2", type = "qualitative")
species_colors <- setNames(
walter_white2[c(1, 2, 4)],
levels(d$Species)
)
species_shapes <- setNames(c(21, 22, 24), levels(d$Species))
scatter_scales <- list(
scale_x_continuous(
breaks = 1:7,
limits = c(0.9, 7.1),
expand = expansion(mult = c(0, 0))
),
scale_y_continuous(
breaks = seq(0, 2.5, 0.5),
limits = c(-0.05, 2.55),
expand = expansion(mult = c(0, 0))
)
)
scatter_theme <- theme_pubr(base_size = 13, legend = "right") +
theme(
panel.grid.major = element_line(color = "#E5E3DC", linewidth = 0.35),
panel.grid.minor = element_blank(),
axis.line = element_line(color = "#333330", linewidth = 0.45),
axis.ticks = element_line(color = "#333330", linewidth = 0.4),
plot.title = element_text(face = "bold", size = 15, hjust = 0),
legend.title = element_text(face = "bold"),
legend.key.height = grid::unit(5, "mm"),
strip.background = element_blank(),
strip.text = element_text(face = "bold"),
plot.margin = margin(14, 16, 12, 12)
)
A · 普通散点
没有分组要表达时,只画点。不要为了“丰富”画面主动加入颜色或形状。
#| fig: basic
#| fig-width: 7.4
#| fig-height: 5.1
ggplot(d, aes(Petal.Length, Petal.Width)) +
geom_point(size = 2.7, alpha = 0.72, color = "#333330") +
scatter_scales +
labs(
title = "Iris petal measurements",
x = "Petal length (cm)",
y = "Petal width (cm)"
) +
scatter_theme