movan matplotlib
Posted kingboy100
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了movan matplotlib相关的知识,希望对你有一定的参考价值。
1 import matplotlib.pyplot as plt 2 import numpy as np 3 x = np.linspace(-1, 1, 50) 4 y = 2*x + 1 5 plt.figure()#使用plt.figure定义一个图像窗口 6 plt.plot(x, y)#plt.plot画(x ,y)曲线 7 plt.show()#plt.show显示图像.
1
1 x = np.linspace(-3, 3, 50) 2 y1 = 2*x + 1 3 y2 = x**2 4 plt.figure(num=3, figsize=(8, 5),)#plt.figure定义一个图像窗口:编号为3;大小为(8, 5). 5 plt.plot(x, y2)#使用plt.plot画(x ,y2)曲线 6 7 #使用plt.plot画(x ,y1)曲线, 8 #曲线的颜色属性(color)为红色;曲线的宽度(linewidth)为1.0;曲线的类型(linestyle)为虚线. 9 plt.plot(x, y1, color=‘red‘, linewidth=1.0, linestyle=‘--‘) 10 plt.show()#使用plt.show显示图像
2
1 x = np.linspace(-3, 3, 50) 2 y1 = 2*x + 1 3 y2 = x**2 4 5 plt.figure()#使用plt.figure定义一个图像窗口 6 plt.plot(x, y2)#使用plt.plot画(x ,y2)曲线 7 8 #使用plt.plot画(x ,y1)曲线, 9 #曲线的颜色属性(color)为红色;曲线的宽度(linewidth)为1.0;曲线的类型(linestyle)为虚线. 10 plt.plot(x, y1, color=‘red‘, linewidth=1.0, linestyle=‘--‘) 11 plt.xlim((-1, 2))#plt.xlim设置x坐标轴范围:(-1, 2) 12 plt.ylim((-2, 3))#使用plt.ylim设置y坐标轴范围:(-2, 3) 13 plt.xlabel(‘I am x‘)#使用plt.xlabel设置x坐标轴名称:’I am x’ 14 plt.ylabel(‘I am y‘)#使用plt.ylabel设置y坐标轴名称:’I am y’ 15 plt.show()
3
x = np.linspace(-3, 3, 50) y1 = 2*x + 1 new_ticks = np.linspace(-1, 2, 5)#使用np.linspace定义范围以及个数:范围是(-1,2);个数是5 #使用print打印出新定义的范围. 使用plt.xticks设置x轴刻度:范围是(-1,2);个数是5. print(new_ticks)#[-1. -0.25 0.5 1.25 2. ] plt.plot(x, y1) plt.xticks(new_ticks) #使用plt.yticks设置y轴刻度以及名称:刻度为[-2, -1.8, -1, 1.22, 3] #对应刻度的名称为[‘really bad’,’bad’,’normal’,’good’, ‘really good’]. plt.yticks([-2, -1.8, -1, 1.22, 3],[r‘$really\\ bad$‘, r‘$bad$‘, r‘$normal$‘, r‘$good$‘, r‘$really\\ good$‘]) plt.show()
4
1 #设置不同名字和位置 2 x = np.linspace(-3, 3, 50) 3 y1 = 2*x + 1 4 plt.figure() 5 plt.plot(x, y1) 6 7 ax = plt.gca()#使用plt.gca获取当前坐标轴信息 8 ax.spines[‘right‘].set_color(‘none‘)#使用.spines设置边框:右侧边框;使用.set_color设置边框颜色:默认白色; 9 ax.spines[‘top‘].set_color(‘none‘)#使用.spines设置边框:上边框;使用.set_color设置边框颜色:默认白色; 10 plt.show()
5
1 #调整坐标轴 2 x = np.linspace(-3, 3, 50) 3 y1 = 2*x + 1 4 plt.figure() 5 plt.plot(x, y1) 6 7 #使用.xaxis.set_ticks_position设置x坐标刻度数字或名称的位置:bottom. 8 #(所有位置:top,bottom,both,default,none) 9 ax.xaxis.set_ticks_position(‘bottom‘) 10 11 #使用.spines设置边框:x轴;使用.set_position设置边框位置: 12 #y=0的位置;(位置所有属性:outward,axes,data) 13 ax.spines[‘bottom‘].set_position((‘data‘, 0)) 14 plt.show()
6
1 #调整坐标轴 2 x = np.linspace(-3, 3, 50) 3 y1 = 2*x + 1 4 plt.figure() 5 plt.plot(x, y1) 6 7 #使用.yaxis.set_ticks_position设置y坐标刻度数字或名称的位置:left. 8 #(所有位置:left,right,both,default,none) 9 ax.yaxis.set_ticks_position(‘left‘) 10 11 #使用.spines设置边框:y轴;使用.set_position设置边框位置:x=0的位置; 12 #(位置所有属性:outward,axes,data) 使用plt.show显示图像. 13 ax.spines[‘left‘].set_position((‘data‘,0)) 14 plt.show()
7
1 #添加图例 2 3 # set line syles 4 l1, = plt.plot(x, y1, label=‘linear line‘) 5 l2, = plt.plot(x, y2, color=‘red‘, linewidth=1.0, linestyle=‘--‘, label=‘square line‘) 6 7 #loc=‘upper right‘ 表示图例将添加在图中的右上角. 8 plt.legend(loc=‘upper right‘) 9 plt.show()
8
1 #调整位置和名称 2 """ 3 如果我们想单独修改之前的 label 信息, 给不同类型的线条设置图例信息. 4 我们可以在 plt.legend 输入更多参数. 如果以下面这种形式添加 legend, 5 我们需要确保, 在上面的代码 plt.plot(x, y2, label=‘linear line‘) 6 和 plt.plot(x, y1, label=‘square line‘) 中有用变量 l1 和 l2 分别存储起来. 7 而且需要注意的是 l1, l2,要以逗号结尾, 因为plt.plot() 返回的是一个列表. 8 """ 9 plt.legend(handles=[l1, l2], labels=[‘up‘, ‘down‘], loc=‘best‘) 10 plt.show()
9
1 # 2 3 import matplotlib.pyplot as plt 4 import numpy as np 5 6 x = np.linspace(-3, 3, 50) 7 y = 0.1*x 8 9 plt.figure() 10 # 在 plt 2.0.2 或更高的版本中, 设置 zorder 给 plot 在 z 轴方向排序 11 plt.plot(x, y, linewidth=10, zorder=1) 12 plt.ylim(-2, 2) 13 ax = plt.gca() 14 ax.spines[‘right‘].set_color(‘none‘) 15 ax.spines[‘top‘].set_color(‘none‘) 16 ax.spines[‘top‘].set_color(‘none‘) 17 ax.xaxis.set_ticks_position(‘bottom‘) 18 ax.spines[‘bottom‘].set_position((‘data‘, 0)) 19 ax.yaxis.set_ticks_position(‘left‘) 20 ax.spines[‘left‘].set_position((‘data‘, 0)) 21 22 for label in ax.get_xticklabels() + ax.get_yticklabels(): 23 label.set_fontsize(12)#重新调节字体大小 24 # 在 plt 2.0.2 或更高的版本中, 设置 zorder 给 plot 在 z 轴方向排序 25 #bbox设置目的内容的透明度相关参,facecolor调节 box 前景色,edgecolor 设置边框, 26 #本处设置边框为无,alpha设置透明度. 最终结果如下: 27 label.set_bbox(dict(facecolor=‘white‘, edgecolor=‘None‘, alpha=0.7, zorder=2)) 28 plt.show()
10
1 #Scatter 散点图 2 3 import matplotlib.pyplot as plt 4 import numpy as np 5 6 n = 1024 # data size 7 X = np.random.normal(0, 1, n) # 每一个点的X值 8 Y = np.random.normal(0, 1, n) # 每一个点的Y值 9 T = np.arctan2(Y,X) # for color value 10 11 #输入X和Y作为location,size=75,颜色为T,color map用默认值,透明度alpha 为 50% 12 plt.scatter(X, Y, s=75, c=T, alpha=.5) 13 14 plt.xlim(-1.5, 1.5)#x轴显示范围定位(-1.5,1.5) 15 plt.xticks(()) # 隐藏x坐标轴 16 plt.ylim(-1.5, 1.5) 17 plt.yticks(()) # 隐藏Y坐标轴 18 19 plt.show()
11
1 #Bar 柱状图 2 import matplotlib.pyplot as plt 3 import numpy as np 4 5 #向上向下分别生成12个数据,X为 0 到 11 的整数 , 6 #Y是相应的均匀分布的随机数据。 使用的函数是plt.bar 7 n = 12 8 X = np.arange(n) 9 Y1 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n) 10 Y2 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n) 11 12 plt.bar(X, +Y1) 13 plt.bar(X, -Y2) 14 15 plt.xlim(-.5, n) 16 plt.xticks(()) 17 plt.ylim(-1.25, 1.25) 18 plt.yticks(()) 19 20 #用facecolor设置主体颜色,edgecolor设置边框颜色为白色 21 plt.bar(X, +Y1, facecolor=‘#9999ff‘, edgecolor=‘white‘) 22 plt.bar(X, -Y2, facecolor=‘#ff9999‘, edgecolor=‘white‘) 23 24 plt.show()
12
1 #Contours 等高线图 2 import matplotlib.pyplot as plt 3 import numpy as np 4 5 """ 6 数据集即三维点 (x,y) 和对应的高度值,共有256个点。高度值使用一个 height function f(x,y) 生成。 7 x, y 分别是在区间 [-3,3] 中均匀分布的256个值,并用meshgrid在二维平面中将每一个x和每一个y分别对应起来,编织成栅格 8 """ 9 def f(x,y): 10 # the height function 11 return (1 - x / 2 + x**5 + y**3) * np.exp(-x**2 -y**2) 12 13 n = 256 14 x = np.linspace(-3, 3, n) 15 y = np.linspace(-3, 3, n) 16 X,Y = np.meshgrid(x, y) 17 18 #使用函数plt.contourf把颜色加进去,位置参数分别为:X, Y, f(X,Y)。 19 #透明度0.75,并将 f(X,Y) 的值对应到color map的暖色组中寻找对应颜色 20 plt.contourf(X, Y, f(X, Y), 8, alpha=.75, cmap=plt.cm.hot) 21 22 23 #使用plt.contour函数划线。位置参数为:X, Y, f(X,Y)。颜色选黑色, 24 #线条宽度选0.5。现在的结果如下图所示,只有颜色和线条,还没有数值Label: 25 C = plt.contour(X, Y, f(X, Y), 8, colors=‘black‘, linewidth=.5) 26 27 #8代表等高线的密集程度,这里被分为10个部分。如果是0,则图像被一分为二。 28 #最后加入Label,inline控制是否将Label画在线里面,字体大小为10。并将坐标轴隐藏: 29 plt.clabel(C, inline=True, fontsize=10) 30 plt.xticks(()) 31 plt.yticks(())
13
1 #Image 图片 2 3 #这里我们打印出的是纯粹的数字,而非自然图像。 我们今天用这样 3x3 的 2D-array 来表示点的颜色,每一个点就是一个pixel。 4 a = np.array([0.313660827978, 0.365348418405, 0.423733120134, 5 0.365348418405, 0.439599930621, 0.525083754405, 6 0.423733120134, 0.525083754405, 0.651536351379]).reshape(3,3) 7 8 #我们之前选cmap的参数时用的是:cmap=plt.cmap.bone,而现在,我们可以直接用单引号传入参数。 origin=‘lower‘代表的就是选择的原点的位置 9 plt.imshow(a, interpolation=‘nearest‘, cmap=‘bone‘, origin=‘lower‘)
14
1 #3D 数据 2 from mpl_toolkits.mplot3d import Axes3D 3 4 #定义一个图像窗口,在窗口上添加3D坐标轴 5 fig = plt.figure() 6 ax = Axes3D(fig) 7 8 #进 X 和 Y 值,并将 X 和 Y 编织成栅格。每一个(X, Y)点对应的高度值 9 # X, Y value 10 X = np.arange(-4, 4, 0.25) 11 Y = np.arange(-4, 4, 0.25) 12 X, Y = np.meshgrid(X, Y) # x-y 平面的网格 13 R = np.sqrt(X ** 2 + Y ** 2) 14 # height value 15 Z = np.sin(R) 16 17 #并将一个 colormap rainbow 填充颜色,之后将三维图像投影到 XY 平面上做一个等高线图 18 ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap(‘rainbow‘))#rstride 和 cstride 分别代表 row 和 column 的跨度 19 20 #投影 21 ax.contourf(X, Y, Z, zdir=‘z‘, offset=-2, cmap=plt.get_cmap(‘rainbow‘))
15
1 #Subplot 多合一显示 2 3 plt.figure() 4 plt.subplot(2,2,1)#使用plt.subplot来创建小图. plt.subplot(2,2,1)表示将整个图像窗口分为2行2列 5 plt.plot([0,1],[0,1])#当前位置为1. 使用plt.plot([0,1],[0,1])在第1个位置创建一个小图 6 7 plt.subplot(2,2,2)#plt.subplot(2,2,2)表示将整个图像窗口分为2行2列, 当前位置为2 8 plt.plot([0,1],[0,2])#plt.plot([0,1],[0,2])在第2个位置创建一个小图 9 10 plt.subplot(223)#plt.subplot(2,2,3)表示将整个图像窗口分为2行2列,当前位置为3 11 plt.plot([0,1],[0,3])#使用plt.plot([0,1],[0,3])在第3个位置创建一个小图 12 13 plt.subplot(224)#将整个图像窗口分为2行2列, 当前位置为4 14 plt.plot([0,1],[0,4])#在第4个位置创建一个小图 15 16 plt.show() # 展示
16
1 #不均匀图中图 2 3 plt.subplot(2,1,1)#将整个图像窗口分为2行1列, 当前位置为1 4 plt.plot([0,1],[0,1])#第1个位置创建一个小图 5 6 plt.subplot(2,3,4)#将整个图像窗口分为2行3列, 当前位置为4 7 plt.plot([0,1],[0,2])#plt.plot([0,1],[0,2])在第4个位置创建一个小图 8 9 plt.subplot(235)#将整个图像窗口分为2行3列,当前位置为5 10 plt.plot([0,1],[0,3])#第5个位置创建一个小图 11 12 plt.subplot(236) 13 plt.plot([0,1],[0,4]) 14 15 plt.show() # 展示
17
1 #第一个y坐标 2 3 x = np.arange(0, 10, 0.1) 4 y1 = 0.05 * x**2 5 y2 = -1 * y1 6 7 fig, ax1 = plt.subplots()#y2和y1是互相倒置的。接着,获取figure默认的坐标系 ax1: 8 9 #第二个y坐标 10 #对ax1调用twinx()方法,生成如同镜面效果后的ax2 11 ax2 = ax1.twinx() 12 13 ax1.plot(x, y1, ‘g-‘) # green, solid line 14 ax1.set_xlabel(‘X data‘) 15 ax1.set_ylabel(‘Y1 data‘, color=‘g‘) 16 ax2.plot(x, y2, ‘b-‘) # blue 17 ax2.set_ylabel(‘Y2 data‘, color=‘b‘) 18 plt.show()
18
以上是关于movan matplotlib的主要内容,如果未能解决你的问题,请参考以下文章