3.3.3 Python 数据可视化——图表辅助元素的定制

3.3.3 实例 2 :支付宝月账单报告(添加标题、图例)
图例常见于饼图中,主要用于标注饼图中每个扇形代表的含义。2.6.2 节的用户 A 某月
支付宝账单报告的饼图将每个扇形的含义标注到圆外,由于标注的文字长短不一且扇形数量
偏多,导致图表显得比较杂乱,因此将饼图中全部的标注文字移到图例中,具体代码如下。
In [3]:
# 02_monthly_bills_of_alipay
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
kinds = [' 购物 ', ' 人情往来 ', ' 餐饮美食 ', ' 通信物流 ', ' 生活日用 ',
      ' 交通出行 ', ' 休闲娱乐 ', ' 其他 ']
money_scale = [800 / 3000, 100 / 3000, 1000 / 3000, 200 / 3000,
      300 / 3000, 200 / 3000, 200 / 3000, 200 / 3000]

dev_position = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]

plt.pie(money_scale, autopct='%3.1f%%', shadow=True,
      explode=dev_position, startangle=90)
# 添加标题
plt.title(' 支付宝月账单报告 ')
# 添加图例
plt.legend(kinds, loc='upper right', bbox_to_anchor=[1.3, 1.1])
plt.show()
运行程序,效果如图 3-8 所示。
图 3-8 中,标题位于图表顶部且与图表居中对齐,图例位于图表的右上方。与图 2-17

相比,图 3-8 增加了标题和图例,有助于用户明确饼图及其每个颜色的扇形的含义。

3.4 显示网格
3.4.1 显示指定样式的网格
网格是从刻度线开始延伸,贯穿至整个绘图区域的辅助线条,它能帮助人们轻松地查看
图形的数值。网格按不同的方向可以分为垂直网格和水平网格,这两种网格既可以单独使用,
也可以同时使用,常见于添加图表精度、分辨图形细微差别的场景。
matplotlib 中可以直接使用 pyplot 模块的 grid () 函数显示网格,grid () 函数的语法格式如
下所示 :
grid(b=None, which='major', axis='both', ** kwargs)
该函数常用参数的含义如下。

·b :表示是否显示网格。若提供其他关键字参数,则 b 参数设为 True。

·which :表示显示网格的类型,支持 major、minor、both 这 3 种类型,默认为 major。
·axis :表示显示哪个方向的网格,该参数支持 both、x 和 y 这 3 个选项,默认为 both。
·linewidth 或 lw :表示网格线的宽度。
此外,还可以使用 Axes 对象的 grid() 方法显示网格。需要说明的是,坐标轴若没有刻度,
就无法显示网格。
在 3.3.2 节绘制的正弦和余弦曲线图中显示水平网格,增加的代码如下。
# 显示网格
plt.grid(b=True, axis='y', linewidth=0.3)
运行程序,效果如图 3-9 所示。
3.4.2 实例 3 :汽车速度与制动距离的关系(添加网格)
在 2.7.2 节的汽车速度与制动距离关系的散点图中,很多圆点因距离坐标轴较远而无法
准确地看出数值。因此,本实例将在散点图中显示网格,并调整坐标轴的刻度,具体代码
如下。
In [4]:
# 03_vehicle_speed_and_braking_distance
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
x_speed = np.arange(10, 210, 10)
y_distance = np.array([0.5, 2.0, 4.4, 7.9, 12.3,
              17.7, 24.1, 31.5, 39.9, 49.2,
              59.5, 70.8, 83.1, 96.4, 110.7,
              126.0, 142.2, 159.4, 177.6, 196.8])
plt.scatter(x_speed, y_distance, s=50, alpha=0.9, linewidths=0.3)
# 设置 x 轴的标签、 刻度标签

plt.xlabel(' 速度 (km/h)')

plt.ylabel(' 制动距离 (m)')
plt.xticks(x_speed)
# 显示网格
plt.grid(b=True, linewidth=0.3)
plt.show()
运行程序,效果如图 3-10 所示。
与图 2-19 相比,图 3-10 的散点图增加了坐标轴标签、浅灰色的网格,有助于用户大致
了解各数据点对应的数值。

猜你喜欢

转载自blog.csdn.net/qq_43416206/article/details/132262835