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的主要内容,如果未能解决你的问题,请参考以下文章

Matplotlib 安装

Matplotlib 基本概念

Matplotlib快速入门

matplotlib绘图入门详解

matplotlib 绘图常用函数

Matplotlib 教程