4. Matplotlib的清晰表达

个人网站:山海同行
网站地址:https://shanhaigo.cn/
本篇地址:https://shanhaigo.cn/courseContent/121871481879555932160

接上篇,实现了自定义点和线的样式,但是图中表达的x轴、y轴不是很详细,接下来有Matplotlib小伙伴给大家慢慢完善描述信息,达到看图识意!

一、添加刻度

现在我们画的图是北京2024年平均天气,x轴应该是月份,y轴应该是温度,这样我们知道每个月对应的温度趋势。如何添加呢?

Matplotlib给出了x、y的刻度接口,我们要做的就是把刻度信息给到Matplotlib小伙伴就行:

plt.xticks(x, **kwargs)
x:要显示的刻度值
plt.yticks(y, **kwargs)
y:要显示的刻度值

比如,这次我把12月的月份和对应的温度数据,给到Matplotlib就可以实现:

# 刻度
# 月份刻度
x_ticks_label = ["{}月".format(i) for i in range(1, 13)]
# 温度刻度
y_ticks_label = ["{}℃".format(i) for i in y_data]
# 刻度赋值
plt.xticks(x_data, x_ticks_label)
plt.yticks(y_data, y_ticks_label)

image.png

中文刻度显示问题,有的图表中文不显示

解决方法如下:

from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

二、添加网格

为了更好的辅助x轴和y轴的对应关系,添加网格
网格语法如下:

grid(color = 'color', linestyle = 'linestyle', linewidth = number)

参数说明:
color:‘b’ 蓝色,‘m’ 洋红色,‘g’ 绿色,‘y’ 黄色,‘r’ 红色,‘k’ 黑色,‘w’ 白色,‘c’ 青绿色,‘#008000’ RGB 颜色符串。
linestyle:‘‐’ 实线,‘‐‐’ 破折线,‘‐.’ 点划线,‘:’ 虚线。
linewidth:设置线的宽度,可以设置一个数字。

举例:

# 网格
# 默认True:显示网格,虚线,透明度为0.5
plt.grid(True, linestyle='--', alpha=0.5)

image.png

三、添加轴上描述

添加x轴和y轴的描述信息

# 轴描述
plt.xlabel("月份")
plt.ylabel("温度")

image.png

四、添加图的标题

为整张图添加标题

# 图标题
plt.title("北京2024年平均天气")

image.png

五、添加图例

添加图例前,我们需要另一组数据,同一张表中进行区分

添加深圳温度天气

# 深圳2024年平均天气
# 十二个月
sz_x_data = [i for i in range(1, 13)]
# 每个月平均温度
sz_y_data = [19, 22, 26, 27, 28, 28, 28, 28, 27, 25, 22, 20]

# 深圳折线图
plt.plot(sz_x_data, sz_y_data, 'o:g')

接下来进行添加图例

# 图例
plt.legend(["北京", "深圳"], loc='best')

image.png

loc参数值如下:

字符串编码
‘best’0
‘upper right’1
‘upper left’2
‘lower left’3
‘lower right’4
‘right’5
‘center left’6
‘center right’7
‘lower center’8
‘upper center’9
‘center’10

完整代码如下

import matplotlib.pyplot as plt
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

# 画图背景切换
plt.switch_backend('TkAgg')

# 北京2024年平均天气
# 十二个月
x_data = [i for i in range(1, 13)]
# 每个月平均温度
y_data = [-4, -4, 5, 10, 18, 23, 25, 25, 20, 10, 2, -4]

# 深圳2024年平均天气
# 十二个月
sz_x_data = [i for i in range(1, 13)]
# 每个月平均温度
sz_y_data = [19, 22, 26, 27, 28, 28, 28, 28, 27, 25, 22, 20]

# 画布
plt.figure(figsize=(15, 7), dpi=100)

# 绘制折线图
# 实心圆
plt.plot(x_data, y_data)

# 深圳折线图
plt.plot(sz_x_data, sz_y_data, 'o:g')

# 刻度
# 月份刻度
x_ticks_label = ["{}月".format(i) for i in range(1, 13)]
# 温度刻度
y_ticks_label = ["{}℃".format(i) for i in y_data]
# 刻度赋值
plt.xticks(x_data, x_ticks_label)
plt.yticks(y_data, y_ticks_label)

# 网格
# 默认True:显示网格,虚线,透明度为0.5
plt.grid(True, linestyle='--', alpha=0.5)

# 轴描述
plt.xlabel("月份")
plt.ylabel("温度")

# 图标题
plt.title("北京2024年平均天气")


# 图例
plt.legend(["北京", "深圳"], loc='best')

# 生成图片
plt.show()
### 配置 `matplotlib.pyplot` 参数或样式的指南 在使用 `matplotlib.pyplot` 进行数据可视化时,可以灵活地调整绘图的各种参数和样式以满足需求。以下是一些常用配置方式及其说明。 #### 1. **全局样式配置** 可以通过修改 Matplotlib 的 rcParams 字典来更改默认的全局样式设置。rcParams 控制着诸如字体大小、线条宽度、颜色循环等属性[^4]。 ```python import matplotlib.pyplot as plt # 修改全局样式 plt.rcParams['lines.linewidth'] = 2 # 设置线条宽度 plt.rcParams['font.size'] = 12 # 设置字体大小 plt.rcParams['axes.titlesize'] = 'large' # 设置标题字体大小 plt.rcParams['figure.figsize'] = [8, 6] # 设置图片尺寸 ``` 以上代码片段展示了如何通过访问 `plt.rcParams` 来定制整体外观表现。 #### 2. **局部样式应用** 对于特定图表而言,则可以直接向各个绘图函数传递关键字参数来自定义它们的行为特征。例如,在绘制折线图的时候就可以单独设定每条路径的颜色(c),粗细(lw)以及其他视觉效果相关的选项: ```python x = range(10) y = [i**2 for i in x] # 绘制带有个性化样式的曲线 plt.plot(x, y, c='red', lw=3, label='Quadratic Function', alpha=0.7) # 添加其他装饰性组件 plt.title('Sample Plot') plt.xlabel('X-axis Label') plt.ylabel('Y-axis Label') plt.legend() plt.show() ``` 在此例子中,我们不仅指定了红色(`c='red'`)较宽(`lw=3`)半透明(`alpha=0.7`)的一条二次方程轨迹,还加入了必要的文字解释以便读者更好地理解所表达的内容意义所在[^4]。 #### 3. **保存高质量图像文件** 当完成设计之后可能还需要导出结果至外部媒介分享给他人审阅。此时应该考虑分辨率(dpi)等因素影响最终成品质量的好坏程度[^4]: ```python plt.savefig('my_figure.png', dpi=300, bbox_inches='tight') ``` 这里设置了较高的 DPI 值确保细节清晰可见的同时也裁剪掉了多余的空白边缘部分使版面更加紧凑美观[^4]。 --- ### 总结 通过对上述几个方面的学习了解,相信已经掌握了基本的操作技巧去调节自己的作品直至满意为止。记住合理运用这些技术手段可以让我们的报告材料更具吸引力更容易吸引观众眼球停留时间延长进而提高传播效率达成预期目标!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值