散点图:
import matplotlib.pyplot as plt import numpy as np n = 1024 X = np.random.normal(0, 1, n) # X值,平均数是0,方差是1 Y = np.random.normal(0, 1, n) # Y值 T = np.arctan2(Y,X) # 每个点的颜色 plt.scatter(X, Y, s=75, c=T, alpha=0.5)#x,y,大小,颜色,透明度 plt.xlim(-1.5, 1.5) #x轴范围 plt.xticks(()) # 隐藏x坐标轴 plt.ylim(-1.5, 1.5) plt.yticks(()) plt.show()
柱状图:
import matplotlib.pyplot as plt import numpy as np 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) plt.bar(X, +Y1) plt.bar(X, -Y2) plt.xlim(-0.5, n) plt.xticks(()) plt.ylim(-1.25, 1.25) plt.yticks(()) #facecolor设置主体颜色,edgecolor设置边框颜色为白色 plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='white') plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white') for x, y in zip(X, Y1): #plt.text():图上标注,保留两位小数 #ha='center':横向居中对齐,va='bottom':纵向顶部、底部对齐 plt.text(x + 0.4, y + 0.05, '%.2f' % y, ha='center', va='bottom') for x, y in zip(X, Y2): # ha: horizontal alignment # va: vertical alignment plt.text(x + 0.4, -y - 0.05, '%.2f' % y, ha='center', va='top') plt.show()
等高线图:
import matplotlib.pyplot as plt import numpy as np def f(x,y): # 根据x,y生成对应的高度 return (1 - x / 2 + x**5 + y**3) * np.exp(-x**2 -y**2) n = 256 x = np.linspace(-3, 3, n) y = np.linspace(-3, 3, n) #用meshgrid在二维平面中将每一个x和每一个y分别对应起来,编织成栅格 X,Y = np.meshgrid(x, y) #使用函数plt.contourf把颜色加进去,位置参数分别为:X, Y, f(X,Y)。透明度0.75,并将 #f(X,Y) 的值对应到color map的暖色组中寻找对应颜色 plt.contourf(X, Y, f(X, Y), 8, alpha=.75, cmap=plt.cm.hot) #使用plt.contour函数划线。位置参数为:X, Y, f(X,Y)。颜色选黑色,线条宽度选0.5 C = plt.contour(X, Y, f(X, Y), 8, colors='black', linewidth=.5) """ 8代表等高线的密集程度,这里被分为10个部分。如果是0,则图像被一分为二。 最后加入Label,inline控制是否将Label画在线里面,字体大小为10。并将坐标轴隐藏 """ plt.clabel(C, inline=True, fontsize=10) plt.xticks(()) plt.yticks(())
Image 图片:
import matplotlib.pyplot as plt import numpy as np a = np.array([0.313660827978, 0.365348418405, 0.423733120134, 0.365348418405, 0.439599930621, 0.525083754405, 0.423733120134, 0.525083754405, 0.651536351379]).reshape(3,3) # origin='lower'代表的就是选择的原点的位置。 plt.imshow(a, interpolation='nearest', cmap='bone', origin='lower') #添加colorbar ,添加一个shrink参数,使colorbar的长度变短为原来的92% plt.colorbar(shrink=.92) plt.xticks(()) plt.yticks(()) plt.show()
3D 数据:
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D #创建三维坐标窗口 fig = plt.figure() ax = Axes3D(fig) X = np.arange(-4, 4, 0.25) Y = np.arange(-4, 4, 0.25) X, Y = np.meshgrid(X, Y) # x、y 栅格化 #设置高度值 R = np.sqrt(X ** 2 + Y ** 2) Z = np.sin(R) #投影除出等高线 ,rstride 和 cstride 分别代表 row 和 column 的跨度。 ax.plot_surface(X, Y, Z, rstride=1, cstride=1,cmap=plt.get_cmap('rainbow')) #添加 XY 平面的等高线,如果 zdir 选择了x,那么效果将会是对于 XZ 平面的投影 ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.get_cmap('rainbow')) plt.show()