📅  最后修改于: 2023-12-03 15:37:38.924000             🧑  作者: Mango
在使用ggplot2绘图时,图例通常会自动绘制。然而,在某些情况下,您可能需要手动绘制图例或过滤掉某些值。在本文中,我将向您展示如何在R中绘制没有绘图的ggplot2图例。
首先,我们需要准备一些数据来绘制一个范例图。我们将使用R内置的diamonds数据集。
library(ggplot2)
diamonds_plot <- ggplot(data = diamonds,
aes(x = price, y = carat, color = cut)) +
geom_point(size = 2)
diamonds_plot
上面的代码将绘制一幅根据价格和克拉数的关系,将不同颜色的钻石按照切割质量进行分类的散点图。
要手动绘制图例,我们需要创建一个带有离散值和颜色映射的数据框,并使用ggplot2中的配色方案。
legend_data <- data.frame(cut = c("Fair", "Good", "Very Good", "Premium", "Ideal"),
color = c("#F8766D", "#A3A500", "#00BA38", "#00C0F8", "#619CFF"))
ggplot() +
geom_rect(aes(xmin = 0, xmax = 1, ymin = 0, ymax = nrow(legend_data), fill = color),
data = legend_data) +
scale_fill_identity() +
scale_y_discrete(labels = legend_data$cut) +
theme(legend.position="none")
这将绘制一个矩形示例,其中每个切割质量对应着一种独特的颜色。
有时,您可能需要绘制筛掉了某些颜色的图例。要筛掉某些颜色,我们只需要排除那些特定的颜色并重新绘制图例。
exclude_colors <- c("#F8766D", "#A3A500")
filtered_legend_data <- legend_data[!legend_data$color %in% exclude_colors, ]
ggplot() +
geom_rect(aes(xmin = 0, xmax = 1, ymin = 0, ymax = nrow(filtered_legend_data), fill = filtered_legend_data$color),
data = filtered_legend_data) +
scale_fill_identity() +
scale_y_discrete(labels = filtered_legend_data$cut) +
theme(legend.position="none")
上面的代码将绘制出一个筛去了Fair和Good两种颜色的图例。
要手动绘制图例或筛选掉某些颜色,您只需要创建一个带有离散值和颜色映射的数据框,并使用ggplot2中的配色方案。这些技巧将帮助您在R中更好地掌握ggplot2图形的控制。