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

文章目录

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

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

安装

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

中文显示

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

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

折线图、点线图

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

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 参数可以绘制堆积柱状图

# 生成数据
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 轴范围,然后在两个图之间添加截断线的方式来实现

# 生成数据
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.hqwc.cn/news/650962.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

el-date-picker 禁用时分秒选择(包括禁用下拉框展示)

2024.04.26今天我学习了对el-date-picker进行禁用时分秒, 在使用el-date-picker组件的时候,我们有可能遇到需要把时分秒的时间固定,然后并且不能让他修改: 1714120999296 比如右上角的这个时间,我们要给它固定是‘08:…

“AI 程序员入职系列”第二弹:如何利用通义灵码光速改写项目编程语言?

通义灵码入职阿里云云原生团队后,已经展示过 Ta 生成单元测试和自动生成代码的强大实力。今天,阿里云后端工程师云徊将从项目开发的实际需求出发,演示通义灵码在开发工作中可提供的帮助。 通义灵码在 Git 开发项目中起到了哪些作用&#xff…

前端JS必用工具【js-tool-big-box】,防抖和节流的方法调用学习

这一小节,我们针对前端工具包(npm)js-tool-big-box的使用做一些讲解,主要是防抖和节流方面的。 目录 前言 1 安装和引入 2 防抖的调用学习 3 节流的调用学习 4 使用方法总结 前言 在前端项目中,经常涉及到防抖…

Rancher 应用商店离线环境使用

前言 Rancher (v2.5 ) 应用商店可以方便的安装 Helm3 构建的应用,并且支持私有 helm 应用仓库,方便了内网离线环境下的使用。本文以内网离线环境为前提、以 MySQL 5.7.43 版本为应用举例,从零开始手把手教你如何制作并应用。 1、环境准备 1.…

分布式密钥生成

可验证且无经销商 分布式密钥生成 (DKG) 是一种加密协议,使多方能够协作生成共享密钥,而无需任何一方完全了解密钥。 它通过在多个参与者之间分配信任来增强各种应用程序的安全性,从而降低密钥泄露的风险。 我们引入了一种可验证且无经销商的…

Python实现飞机大战

提供学习或者毕业设计使用,功能基本都有,不能和市场上正式游戏相提比论,请理性对待! 本博文将开启免费试读,如有您需要完整源码或者素材材料等,请订阅本专栏或者找博主购买!购买后将提供源码文件…

什么是独立服务器?独立服务器最全面介绍

独立服务器是单个客户端具有独占访问权的服务器类型,在服务器开发过程中,以前使用虚拟主机和虚拟独立服务器(VPS)的公司几乎不可避免地转向独立服务器。 什么是独立服务器? 独立服务器是单个客户端具有独占访问权的服…

Golang | Leetcode Golang题解之第50题Pow(x,n)

题目: 题解: func myPow(x float64, n int) float64 {if n > 0 {return quickMul(x, n)}return 1.0 / quickMul(x, -n) }func quickMul(x float64, n int) float64 {if n 0 {return 1}y : quickMul(x, n/2)if n%2 0 {return y * y}return y * y * …

随笔Ubuntu上的的一些使用

Ubuntu简易使用 常用指令 cdlsmkdirrf -rm 路径 换源 备份镜像 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak编辑文件设置 sudo gedit /etc/apt/sources.list清华源 # 阿里源 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe mul…

跨界客户服务:拓展服务边界,创造更多价值

在日益激烈的市场竞争中,企业如何突破传统服务模式的限制,创造更多价值,已成为业界关注的焦点。跨界客户服务作为一种新兴服务模式,正逐渐受到企业的青睐。通过跨界合作,企业可以拓展服务边界,提供更加多元…

PS常见问题总结

目录 基础问题PS如何将两张图片叠加且第一张图片的背景变为透明?ps中多个图片重叠到一起如何分开? 快捷键待续、更新中 基础 图像文件格式 PSD、JPG、PNG、GIF、PDF PSD: Photoshop默认的存储格式, 单用存储空间大 JPG: 有损压缩格式, 存储空间小, 但压缩容易导致…

鸿蒙OpenHarmony【轻量系统 编写“Hello World”程序】 (基于Hi3861开发板)

编写“Hello World”程序 下方将通过修改源码的方式展示如何编写简单程序,输出“Hello world”。请在下载的源码目录中进行下述操作。 确定目录结构。 开发者编写业务时,务必先在./applications/sample/wifi-iot/app路径下新建一个目录(或一…