目录
零之前言
一.使用
1.引入库
2.坐标系的属性
①坐标轴
②图形的绘制
③绘制多个图像
二.显示图像
三.搬运一下其他类型的图
1.普通图
2.散点图
3.条形图
4.网格
5.剩下的图
零之前言
matplotlib就如一大堆非常精美的盘子,单用没什么效果,主要是用来呈现出更好的东西(菜品)。工具人流下了心酸的泪
。
本文主要记录matplotlib的用法,同时涉及辅助的numpy代码。
一.使用
1.引入库
一般是这样导入
import numpy as np
from matplotlib import pyplot as plt
亦或者把导入全部的pylab。(pylab是matplotlib的一部分)
pylab 是 matplotlib 面向对象绘图库的一个接口。它的语法和 Matlab 十分相近。也就是说,它主要的绘图命令和 Matlab 对应的命令有相似的参数。
from pylab import *
2.坐标系的属性
①坐标轴
一般不设置的话,就是默认的表示。但是,默认的表示方式也是真的很不错!
# 设置横轴的上下限
xlim(-4.0,4.0)
# 设置横轴记号
xticks(np.linspace(-4,4,9,endpoint=True))
# 设置纵轴的上下限
ylim(-1.0,1.0)
# 设置纵轴记号
yticks(np.linspace(-1,1,5,endpoint=True))
这样设置上下限的效果会更好
xlim(X.min()*1.1, X.max()*1.1)
ylim(C.min()*1.1, C.max()*1.1)
#X,C为一个列表
上下限不必解释,而设置记号则是一个列表,如[0,1,2,3],用np.linspace可以很方便的建立一个列表:
numpy.linspace(start, stop[, num=50[, endpoint=True[, retstep=False[, dtype=None]]]]])
start - 起始点,
stop - 结束点
num - 元素个数,默认为50,
endpoint - 是否包含stop数值,默认为True,包含stop值;若为False,则不包含stop值
retstep - 返回值形式,默认为False,返回等差数列组,若为True,则返回结果(array([`samples`, `step`]))
dtype - 返回结果的数据类型,默认无,若无,则参考输入数据类型。
也可以用np.arange()
np.arange([start, ]stop, [step, ]dtype=None)
start:可忽略不写,默认从0开始;起始值
stop:结束值;生成的元素不包括结束值
step:可忽略不写,默认步长为1;步长
dtype:默认为None,设置显示元素的数据类型
坐标轴上的文字说明:
# fontproperties 设置中文显示,fontsize 设置字体大小
plt.xlabel("x 轴", fontproperties=zhfont1)
plt.ylabel("y 轴", fontproperties=zhfont1)
②图形的绘制
可以通过这样来绘制图形
plot(X, S, color="red", linewidth=2.5, linestyle="-", label="cosine")
亦或者
plot(X,S,"ob")
其中X,S是我们的X,Y坐标的列表。label是图例名称。对于color和linestyle有其他的参数:
#就是用什么线来连接坐标点
线条风格linestyle或ls 描述
‘-‘ 实线
‘:’ 虚线
‘–’ 破折线
‘None’,’ ‘,’’ 什么都不画
‘-.’ 点划线
坐标点数据的点的样子
标记maker 描述
‘o’ 圆圈
‘.’ 点
‘D’ 菱形
‘s’ 正方形
‘h’ 六边形1
‘*’ 星号
‘H’ 六边形2
‘d’ 小菱形
‘_’ 水平线
‘v’ 一角朝下的三角形
‘8’ 八边形
‘<’ 一角朝左的三角形
‘p’ 五边形
‘>’ 一角朝右的三角形
‘,’ 像素
‘^’ 一角朝上的三角形
‘+’ 加号
‘\ ‘ 竖线
‘None’,’’,’ ‘ 无
‘x’ X
颜色
别名 颜色
b 蓝色
g 绿色
r 红色
y 黄色
c 青色
k 黑色
m 洋红色
w 白色
就像这样:
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(1, 11)
y = 2 * x + 5
plt.plot(x, y, ":or",)
plt.show()
③绘制多个图像
先看样例代码:
import numpy as np
import matplotlib.pyplot as plt
# 计算正弦和余弦曲线上的点的 x 和 y 坐标
x = np.arange(0, 3 * np.pi, 0.1)
y_sin = np.sin(x)
y_cos = np.cos(x)
# 建立 subplot 网格,高为 2,宽为 1
# 激活第一个 subplot
plt.subplot(2, 1, 1)
# 绘制第一个图像
plt.plot(x, y_sin)
plt.title('Sine')
# 将第二个 subplot 激活,并绘制第二个图像
plt.subplot(2, 1, 2)
plt.plot(x, y_cos)
plt.title('Cosine')
# 展示图像
plt.show()
subplot布局方式如下
二.显示图像
显示图像基本上一样,只需要这样
plt.imshow(img)
plt.axis('off') #是否开启坐标轴,默认的是开启
plt.title('image')
plt.show()
还支持显示灰度图:
plt.imshow(img,cmap='gray')
三.搬运一下其他类型的图
搬运自:https://liam.page/2014/09/11/matplotlib-tutorial-zh-cn/
1.普通图
from pylab import *
n = 256
X = np.linspace(-np.pi,np.pi,n,endpoint=True)
Y = np.sin(2*X)
plot (X, Y+1, color='blue', alpha=1.00)
plot (X, Y-1, color='blue', alpha=1.00)
show()
2.散点图
from pylab import *
n = 1024
X = np.random.normal(0,1,n)
Y = np.random.normal(0,1,n)
scatter(X,Y)
show()
3.条形图
from pylab import *
n = 12
X = np.arange(n)
Y1 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)
Y2 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)
bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
for x,y in zip(X,Y1):
text(x+0.4, y+0.05, '%.2f' % y, ha='center', va= 'bottom')
ylim(-1.25,+1.25)
show()
4.网格
from pylab import *
axes = gca()
axes.set_xlim(0,4)
axes.set_ylim(0,3)
axes.set_xticklabels([])
axes.set_yticklabels([])
show()
5.剩下的图
去搬运的原网页看吧
呐,差不多就这样,能满足大部分需求了。