【学习笔记】Python 使用 matplotlib 画图

news/2024/10/18 21:22:00/

文章目录

    • 安装
    • 中文显示
    • 折线图、点线图
    • 柱状图、堆积柱状图
    • 坐标轴断点
    • 参考资料

本文将介绍如何使用 Python 的 matplotlib 库画图,记录一些常用的画图 demo 代码

安装

# 建议先切换到虚拟环境中
pip install matplotlib

中文显示

新版的 matplotlib 已经支持字体回退功能,因此可以直接设置字体为 Times New RomanSimSun(宋体)。这样英文会以 Times New Roman 显示,中文会以 宋体 显示

python">import matplotlib.pyplot as pltplt.rcParams['font.family'] = ['Times New Roman','SimSun']

折线图、点线图

plot 即可以绘制折线图,也可以绘制点线图,通过 marker 参数设置点的样式,markersize 设置点的大小

python">import matplotlib.pyplot as plt# 设置中文字体为 Times New Roman 和 宋体
plt.rcParams['font.family'] = ['Times New Roman','SimSun']# 生成数据
x = range(0, 6)
y = [i**3 for i in x]# 绘制点线图
plt.plot(x, y, marker='o', markersize=6, label='y=x^3')# 添加坐标轴标签
plt.xlabel('x')
plt.ylabel('y')# 配置坐标轴范围
plt.xlim(0)
plt.ylim(0)# 添加图例
plt.legend()# 配置紧凑布局
plt.tight_layout(pad=0.1)# 保存图片
plt.savefig('plot.png')

在这里插入图片描述

柱状图、堆积柱状图

bar 绘制柱状图,通过 bottom 参数可以绘制堆积柱状图

python"># 生成数据
x = range(1, 6)
y1 = [1 for i in x]
y2 = [i for i in x]# 绘制堆积柱状图
plt.bar(x, y1, color='tab:blue', edgecolor='black', label='y1=1', width=0.5)
plt.bar(x, y2, bottom=y1, color='tab:orange', edgecolor='black', label='y2=x', width=0.5)

在这里插入图片描述

坐标轴断点

有时需要在柱状图中添加 y 轴的断点,可以通过画两个相同的图,并配置不同的 y 轴范围,然后在两个图之间添加截断线的方式来实现

python"># 生成数据
x = range(1, 5)
y = [i**3 for i in x]# 分别绘制上下两个图
b1 = ax1.bar(x, y, color='tab:blue', edgecolor='black', label='y1=1', width=0.5)
b2 = ax2.bar(x, y, color='tab:blue', edgecolor='black', label='y1=1', width=0.5)# 显示数据
ax1.bar_label(b1, fmt='%d', label_type='edge')
ax2.bar_label(b2, fmt='%d', label_type='edge')# 配置上图的坐标轴范围
ax1.set_ylim(15)
ax1.set_yticks([20, 40, 60])
# 删掉上图的下边框
ax1.spines['bottom'].set_visible(False)
# 隐藏上图的x轴
ax1.xaxis.set_visible(False)# 配置下图的坐标轴范围
ax2.set_ylim(0, 9)
ax2.set_yticks([0, 2, 4, 6, 8])
# 删掉下图的上边框
ax2.spines['top'].set_visible(False)# 添加截断线,由于图高度比例为1:2,所以截断线的y坐标也需要按比例设置
d = .015
kwargs = dict(transform=ax1.transAxes, color='k', clip_on=False)
ax1.plot((-d, +d), (-2*d, +2*d), **kwargs) 
ax1.plot((1 - d, 1 + d), (-2*d, +2*d), **kwargs)kwargs.update(transform=ax2.transAxes)
ax2.plot((-d, +d), (1 - d, 1 + d), **kwargs)
ax2.plot((1 - d, 1 + d), (1 - d, 1 + d), **kwargs)

在这里插入图片描述

参考资料

  • 【GitHub】Implement Font-Fallback in Matplotlib
  • matplotlib】axes.Axes.bar_label
  • matplotlib】Broken Axis

本文作者: ywang_wnlo
本文链接: https://ywang-wnlo.github.io/posts/731b80f7/
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明


http://www.ppmy.cn/news/1437737.html

相关文章

SQL Server详细使用教程及常见问题解决

一:使用教程 SQL Server是**一个功能强大的关系型数据库管理系统(RDBMS),由Microsoft开发**。 以下是使用SQL Server的详细教程,包括安装、基本概念和操作: 1. **安装SQL Server**: - 访问微软官…

【对象存储】SpringBoot集成华为云OBS对象存储

总体思路是后端向华为云OBS服务器申请授权信息并设置过期时间&#xff0c;后端再将授权信息以Map形式发给前端&#xff0c;前端将文件和授权信息直接发给华为云OBS服务器。 1. 引入依赖 <dependency><groupId>com.huaweicloud</groupId><artifactId>e…

【排序算法】快速排序

快速排序&#xff08;Quick Sort&#xff09;是一种常用的排序算法&#xff0c;它采用分而治之的策略来对一个序列进行排序。快速排序的基本思想是选择一个基准元素&#xff08;通常是序列中的第一个元素&#xff09;&#xff0c;然后将序列中的其他元素分为两个子序列&#xf…

Kafka 3.x.x 入门到精通(03)——对标尚硅谷Kafka教程

Kafka 3.x.x 入门到精通&#xff08;03&#xff09;——对标尚硅谷Kafka教程 2. Kafka基础2.1 集群部署2.2 集群启动2.3 创建主题2.4 生产消息2.4.1 生产消息的基本步骤2.4.2 生产消息的基本代码2.4.3 发送消息2.4.3.1 拦截器2.4.3.1.1 增加拦截器类2.4.3.1.2 配置拦截器 2.4.3…

LS2K1000LA基础教程

基于LS2K1000LA的基础教程 by 南京工业大学 孙冬梅 于 2024.4.25 文章目录 基于LS2K1000LA的基础教程一、目的二、平台1.硬件平台2.软件平台 三、测试0.开发板开机及编译器配置0.1 开发板控制台0.2 虚拟机编译器配置 1. 简单应用编程1.helloworld.c2. fileio 文件操作3.proce…

Linux 解压报错

在linux上面解压压缩包&#xff0c;有可能遇到一下问题&#xff0c;现提供正确语句供参考 一、tar命令解压.zip文件 在使用tar命令解压.zip格式文件时&#xff0c;有时会遇到一下异常 gzip: stdin has more than one entry--rest ignored tar: Child returned status 2 ta…

MySQL 8.0.23 临时表空间文件ibtmp1暴增原因及解决方法

背景描述 同事反馈现场的MySQL8.0.23支撑库异常停止。分析发现是临时表空间过大撑爆了磁盘导致MySQL异常终止。 分析过程 查看MySQL版本 [rootsjjhpt182 mysql]# mysql -V mysql Ver 8.0.23 for Linux on x86_64 (MySQL Community Server - GPL) You have mail in /var/spool/m…

如何最大程度使用AWS?

随着云计算技术的不断发展&#xff0c;AWS已经成为众多企业的首选&#xff0c;为其提供了强大的基础设施和服务。那么如何最大程度地、灵活地利用AWS&#xff0c;成为许多企业专注的焦点。九河云作为AWS的合作伙伴&#xff0c;为读者们提供一些技巧和策略&#xff0c;帮助读者充…