散点图(scatter())
import numpy as np
import matplotlib.pyplot as plt
n = 102 #散点的个数
X = np.random.normal(0, 1, n) #生成散点的横坐标,这些数值服从均值为0,方差为1的正态分布
Y = np.random.normal(0, 1, n)
T = np.arctan2(Y, X) #设定每个散点的颜色值,如为1则对应颜色模板中的颜色一
plt.scatter(X, Y, c=T, s=75)
plt.xticks(())
plt.yticks(())
plt.show()
scatter的参数:
X:散点的横坐标(列表)
Y:散点的纵坐标(列表)
c=T:散点对应的颜色值(列表)
s=75:散点的大小(数值)
柱状图(bar())
import numpy as np
import matplotlib.pyplot as plt
n = 12 #柱子条数
X = np.arange(12) #柱子的横坐标
Y = (1 - X/n) * np.random.uniform(0.5, 1, n) #柱子的高度
plt.bar(X, Y, facecolor="red", edgecolor="black")#画柱子
plt.xticks(X) #设置横坐标的数值
for x, y in zip(X, Y):
plt.text(x, y+0.005, "%.2f"%y, ha="center", va="bottom") #给柱子添加标注
plt.show()
bar的参数:
X:柱子的横坐标(列表)
Y:柱子的高度(列表)
facecolor:柱子的颜色(字符串如:“red”)
edgecolor:柱子的边缘颜色(字符串如:“red”)
补充:
plt.text(x, y+0.005, "%.2f"%y, ha="center", va="bottom")
参数:
x:标注的横坐标(数值)
y:标注的纵坐标(数值)
"%.2f"%y:标注的内容(字符串)
ha="center":标注跟柱子水平中心对齐
va="bottom":标注的底部跟柱子贴着
等高线
import numpy as np
import matplotlib.pyplot as plt
#高度的函数
def f(x,y):
# the height function
return (1 - x / 2 + x**5 + y**3) * np.exp(-x**2 -y**2)
n = 256
x = np.linspace(-3, 3, n) #产生n个横坐标
y = np.linspace(-3, 3, n) #产生n个纵坐标
X, Y = np.meshgrid(x, y) #将显示窗口划分为len(x)*len(y)个小方块,有X,Y索引可得到对应的小方块
plt.contourf(X, Y, f(X, Y), 8, alpha=0.75, cmap=plt.cm.hot)
plt.xticks(())
plt.yticks(())
plt.show()
contourf的参数:
X:小块的横坐标索引(列表)
Y:小块的纵坐标索引(列表)
f(X, Y):对应小块的数值即高度(列表)
8:这个参数加2则为等高线将整幅图分成的块数
alpha:透明度
cmap:颜色模板
C = plt.contour(X, Y, f(X, Y), 8, colors="black", linewidths=1)
contour参数:
X:小块的横坐标索引(列表)
Y:小块的纵坐标索引(列表)
f(X, Y):对应小块的数值即高度(列表)
8:这个参数加2则为等高线将整幅图分成的块数
colors:等高线颜色
linewidths:等高线粗细
plt.clabel(C, inline=True, fontsize=15)
clabel的参数:
C:等高线
inline:数字是否在等高线上
fonsize:字体的大小
3D图
首先要导入Axes3D函数
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d im Axes3D
接下来生成3d坐标系
fig = plt.figure()
ax = Axes3D(fig)
接下来生成x和y值,并且将xy平面编辑成栅格
x = np.arange(-4, 4, 0.25)
y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(x, y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
再来用plot_surface()函数画一个三维图
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap="rainbow", edgecolor="black")
plot_surface的主要参数
rstride:行间隔
cstride:列间隔
cmap:颜色模板
edgecolor:分割线颜色
最后设置一下z轴的范围,让图形好看些
ax.set_zlim(-2, 2)