python-matplotlib
Python绘图
前言
首先说明, 这里的绘图, 不是指像turtle那样的绘画, 而是指利用代码生成条形图、树状图、饼图等对数据进行统计分析.
绘图需要用到两个知名库: Matplotlib和Numpy
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库, 支持大量的维度数组与矩阵运算, 此外也针对数组运算提供大量的数学函数库.
Matplotlib 是一个非常强大的 Python 画图工具, 我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来.
Matplotlib 可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等.
配置环境
最简单的方式: 下载安装Anaconda, 利用conda的虚拟环境自带的Matplotlib和Numpy
利用venv(其实也可以直接装, 只不过是为了防止系统内的包变乱):
1
2
3
4
5
6
7
8# ubuntu安装GUI库
zxq@zxq-virtual-machine:~/python$ sudo apt install python3-tk
# 创建虚拟环境
zxq@zxq-virtual-machine:~/python/matplotlib$ python -m venv matenv
# 激活虚拟环境
zxq@zxq-virtual-machine:~/python/matplotlib$ source matenv/bin/activate
# 安装库
(matenv) zxq@zxq-virtual-machine:~/python/matplotlib$ pip install numpy matplotlib
第一个图
一条直线
1 | # 引入绘图库 |
运行, 得到如下图效果
**注意: **
import matplotlib.pyplot as plt
我们不需要引入整个库, 大部分要用到的功能都在pyplot这个子库内, plt是为了后续简写
import numpy as np
numpy用来产生数据进行绘图
预览图下方几个按钮的作用
前三个: 回到初始/前一个/后一个预览状态
第四个: 移动图像展示位置
第五个: 放大接下来框选的函数图像
第六个: 调节图像上下左右边距等
最后一个: 将当前显示的图像存盘了
多画几张
分隔不同图像, 可以使用plt.figger()
函数
该函数内可传入参数:
mum
: 图像序号(标题栏内数字)
figsize
: 图像大小 (长,宽,元组形式传入)
再画一条
单个图内可以画多条线, 直接使用plt.plot()
即可.
该函数可传入参数:
x,y
: 字面意思,不表
color
: 线的颜色,以文本形式传入,支持名称("red"
)或色号("#a02536"
)
linewidth
: 线的宽度,默认为1.0
linestyle
: 线的形式(如"--"
为虚线)
1 | import matplotlib.pyplot as plt |
设置坐标轴
图像取值范围
plt.xlim()
,plt,ylim()
, 传入参数的形式为元组.
横纵轴名称
plt.xlabel()
,plt.ylabel()
, 传入值为文本.
坐标轴分段
plt.xticks()
,plt.yticks()
, 传入参数由numpy生成,如:
1 | # [-1,2]之间分12个段 |
文字坐标轴
形成如下图中y轴的效果
仍然使用plt.xticks()
,plt.yticks()
, 传入参数为两个列表, 第一个存文字对应数值, 第二个存文字, 一一对应, 如:
1 | plt.yticks([-2,-0.5,1,2,3],['really bad','bad','normal','good','very good']) |
英文字体美化
即 very good -> $very\ good$
这里用到了$\LaTeX$行内公式转换, 步骤如下:
- 文本前加字母
r
, 将文本套在$$
内 - 空格
\
样例如下:
1 | [r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$very\ good$'] |
其余符号也可按照$\LaTeX$语法来写,如$\alpha$->\alpha