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

安装

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

中文显示

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

import matplotlib.pyplot as plt

plt.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)

参考资料

本文作者: ywang_wnlo

本文链接: https://ywang-wnlo.github.io/posts/731b80f7/

版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明

【学习笔记】Python 使用 matplotlib 画图的更多相关文章

  1. python使用matplotlib画图

    python使用matplotlib画图 matplotlib库是python最著名的画图库.它提供了一整套和matlab类似的命令API.十分适合交互式地进行制图. 先介绍了怎样使用matplotl ...

  2. MongoDB学习笔记:Python 操作MongoDB

    MongoDB学习笔记:Python 操作MongoDB   Pymongo 安装 安装pymongopip install pymongoPyMongo是驱动程序,使python程序能够使用Mong ...

  3. python使用matplotlib画图,jieba分词、词云、selenuium、图片、音频、视频、文字识别、人脸识别

    一.使用matplotlib画图 关注公众号"轻松学编程"了解更多. 使用matplotlib画柱形图 import matplotlib from matplotlib impo ...

  4. Python学习笔记—Python基础1 介绍、发展史、安装、基本语法

    第一周学习笔记: 一.Python介绍      1.Python的创始人为吉多·范罗苏姆.1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...

  5. Python学习笔记--Python字符串连接方法总结

    声明: 这些总结的学习笔记,一部分是自己在工作学习中总结,一部分是收集网络中的知识点总结而成的,但不到原文链接.如果有侵权,请知会,多谢. python中有很多字符串连接方式,总结一下: 1)最原始的 ...

  6. 学习笔记——python(继承)

    学习笔记(Python继承) 有几种叫法(父类-子类.基类-派生类)先拿代码演示一下: class father: def work(self): print("work>>&g ...

  7. 集智人工智能学习笔记Python#0

    1,学习基本Python语句规范: print('Hello world') print() 为函数 ‘Hello world’为字符串 2,表达式和语句的区别: 表达式有结果,运算就是表达式的一种: ...

  8. Android学习笔记进阶18 之画图并保存图片到本地

    1.首先创建一个Bitmap图片,并指定大小:   2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可:   3.需要保存的目录File,注意如果写的目录如“/sdcard/so ...

  9. Android学习笔记进阶18之画图并保存图片到本地

    1.首先创建一个Bitmap图片,并指定大小:   2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可:   3.需要保存的目录File,注意如果写的目录如“/sdcard/so ...

  10. 【Python学习笔记】调整matplotlib的图例legend的位置

    有时默认的图例位置不符合我们的需要,那么我们可以使用下面的代码对legend位置进行调整. plt.legend(loc='String or Number', bbox_to_anchor=(num ...

随机推荐

  1. 记录--手把手带你开发一个uni-app日历插件(并发布)

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 相信我们在开发各类小程序或者H5,甚至APP时,会把uni-app作为一个技术选型,其优点在于一键打包多端运行,较为强大的跨平台的性能.但 ...

  2. 关于使用SSM+JSP开发时setter、getter隐式调用问题的小结

    [版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/17977495 出自[进步*于辰的博客] 之前使用SSM ...

  3. 【GD32L233C-START】DAC输出(正弦波、锯齿波、方波)

    [GD32L233C-START]DAC输出(正弦波.锯齿波.方波) 1.介绍GD32L233C采用的是一款M23的内核.这个芯片据说功耗非常的低,低到什么程度呢?等后面我们再进行测试,今天我们主要来 ...

  4. jsonb操作符

    json类型以文本方式存储json对象,把输入的数据原封不动的存放到数据库中,会保留多余的空格,保留重复的Key,保留Key的顺序. jsonb类型转换文本格式json对象为二进制格式,不保留多余的空 ...

  5. FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr

    ​FFmpeg内置了aac音频格式,在<FFmpeg开发实战:从零基础到短视频上线>一书的"5.2.2  Linux环境集成mp3lame"又介绍了如何给FFmpeg集 ...

  6. #dp#洛谷 3244 [HNOI2015]落忆枫音

    题目 分析 每个有入度的点可以选择任意一个父节点组成一棵树,那么原来的答案就是 \(\prod_{i=2}^ndeg[i]\) 现在多了一条边,如果边的终点是1或者它是一个自环那么可以不用管这条边. ...

  7. #李超线段树 or 斜率优化+CDQ分治#洛谷 4655 [CEOI2017]Building Bridges

    题目 分析 列出方程即为\(dp[i]=\min\{dp[j]+(h[i]-h[j])^2+s[i-1]-s[j]\}\) \(dp[j]+h[j]^2-s[j]=2*h[i]*h[j]+dp[i]- ...

  8. #组合计数,卢卡斯定理#D 三元组

    题目 当\(z=0\)时,\(f(x,y,z)=1\), 否则 \[f(x,y,z)=\sum_{x1=1}^x\sum_{y1=1}^y(x-x1+1)(y-y1+1)f(x1,y1,z-1) \] ...

  9. C# 面向对象编程进阶:构造函数详解与访问修饰符应用

    C# 构造函数 构造函数是一种特殊的方法,用于初始化对象.构造函数的优势在于,在创建类的对象时调用它.它可以用于为字段设置初始值: 示例 获取您自己的 C# 服务器 创建一个构造函数: // 创建一个 ...

  10. 解析 Go 编程语言数据类型:bool、整数、浮点数和字符串详细介绍

    数据类型 数据类型是编程中的重要概念.数据类型指定了变量值的大小和类型.Go是静态类型的,这意味着一旦变量类型被定义,它只能存储该类型的数据. 基本数据类型 Go 有三种基本数据类型: bool:表示 ...