复现Science正刊图,换数据即可用!
本次使用R语言复现一下Science正刊中的1张图!
✅读入测试数据,
原图主要由世界map + 散点图组成,散点表示全球海洋鱼类体内污染物浓度。
✅R语言一步一步实现,
🔸绘制世界map,
ggplot() +
# 绘制世界地图
geom_polygon(
data = world_map,
aes(x = long, y = lat, group = group), # 多边形坐标和分组
fill = "#f3f3f3", # 浅灰色填充
color = "#939393", # 灰色边框
linewidth = 0.3# 边框线宽
)
🔸添加散点图,
geom_point(
data = concentration_data,
aes(
x = lon, # 经度
y = lat, # 纬度
fill = conc_group, # 按浓度组填充颜色
size = conc_group # 按浓度组设置点大小
),
shape = 21, # 实心圆点形状
color = "black", # 黑色边框
stroke = 0.5, # 边框粗细
alpha = 0.9# 透明度
)
🔸个性化填充色,
# 填充颜色
scale_fill_manual(
name = "Concentrationn(ng/g ww)", # 图例标题
values = conc_colors, # 使用预定义颜色
drop = FALSE# 保持所有因子水平
) +
# 点的大小
scale_size_manual(
values = c(2, 2.5, 3, 3.5, 4, 4.5, 5), # 7个浓度区间对应的大小
guide = "none"# 不显示大小图例
) +
# X轴(经度)设置
scale_x_continuous(
name = NULL, # 不显示轴标题
breaks = c(-120, -60, 0, 60, 120, 180), # 刻度位置
labels = c("120°W", "60°W", "0°", "60°E", "120°E", "180°"), # 刻度标签
expand = c(0.01, 0.01) # 轴两端扩展
) +
# Y轴(纬度)设置
scale_y_continuous(
name = NULL, # 不显示轴标题
breaks = c(-30, -60, 0, 30, 60), # 刻度位置
labels = c("30°S", "60°S", "0°", "30°N", "60°N"), # 刻度标签
expand = c(0.01, 0.01) # 轴两端扩展
)
🔸个性化theme,
🔸个性化坐标系统,
# 坐标系统
coord_fixed(
ratio = 1.3, # 宽高比
xlim = c(-180, 180), # 经度范围
ylim = c(-60, 85) # 纬度范围
)
🔸图例设置,
final_plot <- plot_grid(
main_plot, # 主图
legend, # 图例
ncol = 2, # 2列布局
rel_widths = c(8, 1.2), # 主图宽度8,图例宽度1.2
align = "h"# 水平对齐
)
# 显示最终图形
print(final_plot)
本期结束!
获取绘图代码+测试数据+数据处理方法+依赖包安装方法,
👇(备注:299)
更多干货👉再更新10个章节,《保姆级R可视化教程3.0》来了!49个章节,200+张图,旨在引导如何系统学习R语言可视化,部分展示如下:



























(加入学习,收费,备注:299)
