可视化 - 线图:matplotlib vs. ggplot2

本文为可视化系列第 01 篇,将介绍线图的基础概念、适用场景与数据集选取,并分别使用 Python Matplotlib 和 R ggplot2 两套工具,演示绘制同一幅线图。
线图
线图通过线段连接离散的数据点,用来呈现指标沿着连续变量(最常见为时间)的变化情况,能够直观反映数值的增减波动、变化快慢以及拐点与周期特征,多系列线图还可以同时对比多组数据的走势差异。
适用场景:
- 展示数据随时间的连续变化(如每日股价、月度营收)
- 观察指标变化趋势、周期性波动、增长 / 衰减速率
- 多组同维度数据趋势对比
不适合:分类项目大小对比、占比展示。
数据集选取
数据集 1 - 油菜生育期动态数据集:rape_growth_dynamics.csv
展示油菜播种后随生育天数推进,株高、叶面积、干物质积累的连续变化趋势。
| 字段 | 释义 | 单位 |
|---|---|---|
| day_after_sowing | 播种后天数 | d |
| plant_height_min_cm | 株高最小值 | cm |
| plant_height_max_cm | 株高最大值 | cm |
| plant_height_mean_cm | 株高平均值 | cm |
| leaf_area_min_cm2 | 单株叶面积最小值 | cm² |
| leaf_area_max_cm2 | 单株叶面积最大值 | cm² |
| leaf_area_mean_cm2 | 单株叶面积平均值 | cm² |
| dry_matter_g | 单株干物质积累量 | g |
可视化 1 - 油菜株高随播种后天数变化
Python Matplotlib
| |
ax.grid方法设置网格线,True表示显示网格线,axis="x"表示仅在x 轴显示网格线,linestyle="--"表示虚线,color="#CBC8C8"表示网格线颜色为 #CBC8C8;ax.legend方法添加图例,loc="lower right"表示图例位置为右下角,其它值如upper left、upper right等。

| |
geom_line函数用于绘制线图,aes函数用于指定数据映射;labs函数用于添加轴标签、标题;theme函数进一步细分绘制要求。

可视化 2 - 叶面积、干物质积累随播种后天数变化
双轴线图,左轴为叶面积,右轴为干物质积累量。
| |
ax.twinx()方法创建右侧双轴,共用 x 轴;

| |
scale_shape_manual函数用于手动指定形状映射;scale_y_continuous函数用于指定 y 轴的刻度标签,sec.axis参数用于指定右侧轴的刻度标签;axis.title.y、axis.text.y、axis.title.y.right、axis.text.y.right函数用于指定轴标签、刻度标签的颜色和大小;panel.grid.major应用element_line函数指定主网格线的样式,其中linetype = 2表示虚线。
