使用Base R绘图时如何设置图例为指定矩形样式?
问题描述
我正在尝试复现如下图表:
目前我已经完成的代码如下:
library(carData) UN <- as.data.frame(UN) layout(matrix(c(1, 2, 3, 3), 2, 2, byrow = TRUE)) col.vec <- c("blue", "turquoise1", "green", "palegreen", "orange", "red", "violet", "purple")[UN$region] pch.vec <- c(8, 6, 5, 4, 3, 2, 1, 0)[UN$region] plot(UN$ppgdp, UN$infantMortality, xlab = "Gross Domestic Product per Capita", ylab = "Infant Mortality", xaxt = "n", las = 1, col = col.vec, pch = pch.vec) axis(side = 1, at = c(0, 20000, 40000, 60000, 80000, 100000), labels = c(0, "", 40000, "", 80000, "")) plot(UN$region, UN$infantMortality, xlab = "Region", ylab = "Infant Mortality", xaxt = "n", las = 1, col = c("blue", "turquoise1", "green", "palegreen", "orange", "red", "violet", "purple")) plot.new() legend('center', legend = UN$region, pch = pch.vec, col = col.vec)
我的问题是:不使用ggplot2或其他任何扩展包的前提下,如何将图例调整为和示例图一致的矩形样式?
解决方法
你只需要对图例部分的代码做两处调整即可:
- 先提取唯一的地区分类,避免图例出现重复项
- 调用
legend()时去掉pch参数,改用fill参数传入颜色值,即可生成填充矩形的图例样式
修改后的完整代码如下:
library(carData) UN <- as.data.frame(UN) layout(matrix(c(1, 2, 3, 3), 2, 2, byrow = TRUE)) # 提取唯一地区和对应配色 unique_regions <- levels(UN$region) region_col <- c("blue", "turquoise1", "green", "palegreen", "orange", "red", "violet", "purple") # 生成绘图用的逐行颜色、点型向量 col.vec <- region_col[UN$region] pch.vec <- c(8, 6, 5, 4, 3, 2, 1, 0)[UN$region] # 第一幅散点图 plot(UN$ppgdp, UN$infantMortality, xlab = "Gross Domestic Product per Capita", ylab = "Infant Mortality", xaxt = "n", las = 1, col = col.vec, pch = pch.vec) axis(side = 1, at = c(0, 20000, 40000, 60000, 80000, 100000), labels = c(0, "", 40000, "", 80000, "")) # 第二幅箱线图 plot(UN$region, UN$infantMortality, xlab = "Region", ylab = "Infant Mortality", xaxt = "n", las = 1, col = region_col) # 图例部分 plot.new() legend('center', legend = unique_regions, fill = region_col, bty = "n") # 可选:去掉图例外框,和常见示例图样式匹配
内容的提问来源于stack exchange,提问作者python_begins
相关产品推荐
相关产品推荐

