赞
踩
在Matplotlib的pyplot模块中有很多绘制图表的函数,来一探究竟吧!
函数 | 解释 |
---|---|
plot(x, y) | 绘制x和y序列的折线图或点图 |
hist(x) | 绘制x序列的直方图 |
bar(x, y) | 绘制x和y序列的柱状图 |
hlines(y, xmin, xmax) | 绘制y序列的水平线图 |
vlines(x, ymin, ymax) | 绘制x序列的垂直线图 |
pie(x) | 绘制x序列的饼图 |
boxplot(x) | 根据x矢量序列(或二维数组)绘制箱式图 |
scatter(x, y, s=None, c=None) | 根据x序列和y序列对应元素值绘制散点图,s定义元素符号,c定义元素颜色 |
contour(X, Y, Z),contourf(X, Y, Z) | 根据X、Y、Z二维数组绘制等值线图 |
imshow(x) | 根据x数组绘制栅格图 |
我在上篇博客已经做了较为详细的描述,这里这直接放上链接哈https://blog.csdn.net/m0_53156691/article/details/123639360
代码及注释:
# 绘制直方图
import numpy as np
import matplotlib.pyplot as plt
x = np.random.randint(0, 101, 200) # 随机产生200个0~100的整数值
plt.hist(x, bins=10, color='r', edgecolor="k") # 将直方图分为10级,统计每级的元素个数作为y值
plt.show()
效果图:
代码及注释:
import matplotlib.pyplot as plt
# 绘制黑、灰两个序列的柱状图并设置宽度
plt.bar([1, 2, 3], [87, 64, 56], width=0.3, color="0.8")
plt.bar([1.5, 2.5, 3.5], [90, 72, 66], width=0.3, color="0.1")
plt.show()
效果图:
代码及注释:
import matplotlib.pyplot as plt
values = [6, 2, 3, 4] # 饼图各部分的值
names = ["A", "B", "C", "D"] # 饼图的各部分标签
colors = ['yellow', 'green', 'red', 'blue'] # 各部分颜色
explode = [0, 0.2, 0, 0] # 每一部分与中心点的偏移
plt.pie(values, labels=names, colors=colors, explode=explode)
plt.show()
效果图:
代码及注释:
import numpy as np
import matplotlib.pyplot as plt
colors = np.array(["r", "g", "b", "b", "r"])
size = np.array([50, 100, 60, 200, 100])
plt.scatter([1, 2, 3, 4, 5], [6, 3, 1, 4, 7], c=colors, s=size)
plt.show()
效果图:
代码及注释:
import numpy as np import matplotlib.pyplot as plt def f(x, y): # 通过这个函数计算出x,y坐标对应的能够闭合的等高线值 return (1 - x / 2 + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2) # 生成x,y的数据 n = 256 x = np.linspace(-3, 3, n) # 在指定间隔内返回均匀间隔的数字 y = np.linspace(-3, 3, n) # 把x,y数据生成mesh网格状的数据,因为等高线的显示是在网格的基础上添加上高度值 X, Y = np.meshgrid(x, y) Z = f(X, Y) plt.contourf(X, Y, Z, 20, cmap=plt.cm.hot) # 填充等高线,20是等高线数量,cmap参数值为热力图显示 C = plt.contour(X, Y, Z, 20) # 添加等高线 plt.clabel(C, inline=True, fontsize=12) # 在登高线上添加标注 plt.show()
效果图:
对于单波段图像,可利用cmap关键字设置颜色表,Matplotlib中的cm模块定义了很多颜色表,可参考官网介绍:https://matplotlib.org/stable/gallery/color/colormap_reference.html
代码及注释:
import numpy as np
import matplotlib.pyplot as plt
grid = np.random.rand(4, 4)
plt.imshow(grid, cmap=plt.cm.gray_r)
plt.show()
效果图:
代码及注释:
import matplotlib.pyplot as plt
import math
angle = [0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360]
value = [42, 34, 32, 55, 33, 42, 33, 52, 45, 38, 33, 26, 42]
rad_angle = list(map(math.radians, angle)) # 将math.radians角度生成函数应用于给定angle列表所有元素
plt.axes(polar=True)
plt.plot(rad_angle, value)
plt.show()
效果图:
本人也不太了解箱式图,因此在官网上找了一个示例:
代码:
import numpy as np
import matplotlib.pyplot as plt
# Fixing random state for reproducibility
np.random.seed(19680801)
# fake up some data
spread = np.random.rand(50) * 100
center = np.ones(25) * 50
flier_high = np.random.rand(10) * 100 + 100
flier_low = np.random.rand(10) * -100
data = np.concatenate((spread, center, flier_high, flier_low))
fig1, ax1 = plt.subplots()
ax1.set_title('Basic Plot')
ax1.boxplot(data)
plt.show()
效果图:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。