【matplotlib】绘图方法汇总1
source link: https://www.guofei.site/2017/09/25/matplotlib2.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
【matplotlib】绘图方法汇总1
2017年09月25日Author: Guofei
文章归类: 7-可视化 ,文章编号: 721
版权声明:本文作者是郭飞。转载随意,但需要标明原文链接,并通知本人
原文链接:https://www.guofei.site/2017/09/25/matplotlib2.html
对数坐标图
根据x, y 轴分别是否为对数,总共4种:
plot()
semilogx()
semilogy()
loglog()
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(1,10,1000)
y=np.sin(x)
plt.subplot(221)
plt.plot(x,y)
plt.subplot(222)
plt.semilogx(x,y)
plt.subplot(223)
plt.semilogy(x,y)
plt.subplot(224)
plt.loglog(x,y)
plt.show()
极坐标绘图
仅需要这样:
plt.subplot(111,polar=True)
import numpy as np
import matplotlib.pyplot as plt
theta=np.linspace(0,2*np.pi,100)
rho=1-np.sin(theta)
plt.subplot(111,polar=True)
plt.plot(theta,rho)
plt.show()
统计绘图
bar
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1, 2, 3, 4, 5])
y1 = x
y2 = x ** 1.5
width = 0.2
plt.bar(x, y1, width)
plt.bar(x + width, y2, width)
plt.show()
这里做了个小技巧,用width作为偏移,画出多个bar
scatter
scatter与plot的不同是,scatter可以分别指定每个点的大小
和颜色
import matplotlib.pyplot as plt
from scipy.stats import uniform
rv=uniform(loc=0,scale=1)
x=rv.rvs(size=100)
y=rv.rvs(size=100)
plt.scatter(x,y,s=x*1000,c=y,marker=(5,1))
plt.show()
按照输入顺序,scatter的输入值分别代表:
- 每个点的X坐标
- 每个点的Y坐标
- s参数指定点的大小(值和点的面积成正比)
- c参数指定点的颜色,可以是数值或数据。
- 如果是数值则自动调用
颜色映射表
- 如果是(N,3)或(N,4)数组,则代表RGB颜色
- 如果是数值则自动调用
- marker指定形状
- 第一个元素代表顶点数量
- 第二个元素代表样式
- 3圆形(忽略边数)
等高图
contour() # 等高线
contourf() # 带填充效果的等高线
示例1
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm
x = np.linspace(-3.0, 3.0, 100)
y = np.linspace(-2.0, 2.0, 80)
X, Y = np.meshgrid(x, y)
Z = X * np.exp(-X ** 2 - Y ** 2)
fig = plt.figure(1)
ax1 = plt.subplot(121)
ax2 = plt.subplot(122)
cs1 = ax1.contour(X, Y, Z, 10)
cs2 = ax2.contourf(X, Y, Z, 10, cmap=cm.PuBu_r)
cbar = fig.colorbar(cs2) # 在figure上添加cs2对应的颜色条
plt.clabel(cs1) # 在cs1的等高线上添加数字
plt.show()
示例2:隐函数的解
加入levels这个参数,可以画出对应的等高图,依次来画出隐函数的解,
下面的代码是画出f=(X2+Y2)∗∗4−(X2−Y2)2f=(X2+Y2)∗∗4−(X2−Y2)2, 在f=0,f=0.5f=0,f=0.5处的解。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1.5, 1.5, 100)
y = np.linspace(-1.5, 1.5, 80)
X, Y = np.meshgrid(x, y)
Z = (X ** 2 + Y ** 2) ** 4 - (X ** 2 - Y ** 2) ** 2
ax = plt.subplot(111)
cs = ax.contour(X, Y, Z, 10, levels=[0, 1], colors=['b', 'r'], linestyles=['-', ':'], linewidths=[2, 2])
plt.clabel(cs)
plt.show()
需要注意的是,由于源数据是离散值,所以等高图在某些区域是离散的片段,但实际上应当是连续值。
箭头图
quiver(X,Y,U,V,C)
- X, Y代表箭头起点的坐标
- U, V代表箭头对应的向量
- C代表颜色
示例
import numpy as np
import matplotlib.pyplot as plt
def f(x, y):
return x * np.exp(-x ** 2 - y ** 2)
def dev_f(f, x, y, dx=1e-6, dy=1e-6):
v = f(x, y)
vx = (f(x + dx, y) - v) / dx
vy = (f(x, y + dy) - v) / dy
return vx, vy
X, Y = np.meshgrid(np.linspace(-2, 2, 20), np.linspace(-2, 2, 20))
U, V = dev_f(f, X, Y)
C = f(X, Y)
plt.quiver(X, Y, U, V, C)
plt.colorbar()
plt.show()
您的支持将鼓励我继续创作!
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK