Python有很多可视化工具,如:Matplotlib。
Matplotlib是一种2D的绘图库,它可以支持硬拷贝和跨系统的交互,它可以在Python脚本、IPython的交互环境下、Web应用程序中使用。如果结合使用一种GUI工具包(如IPython),Matplotlib还具有诸如缩放和平移等交互功能。它不仅支持各种操作系统上许多不同的GUI后端,而且还能将图片导出为各种常见的矢量(vector)和光栅(raster)图:PDF、SVG、JPG、PNG、BMP、GIF等。
由于靠这个画图的话一般都会遇到比较复杂的数据处理,所以numpy也经常和matplotlib一起出现一起使用。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1,1,50) #产生[-1,1]间均匀间隔的数据50个
y = 2*x + 1
plt.figure()
plt.plot(x,y)
plt.show()
注:1.np.linspace()含义
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)
start:返回样本数据开始点
stop:返回样本数据结束点
num:生成的样本数据量,默认为50
endpoint:True则包含stop;False则不包含stop
retstep:If True, return (samples, step), where step is the spacing between samples.(即如果为True则结果会给出数据间隔)
dtype:输出数组类型
axis:0(默认)或-1
2.plt.figure()
声明的其实是一个figure窗口,这个窗口中可以包含很多个图。
3.plt.plot()
plot(x,y,linestyle=‘dashed’,linewidth=0.5,color=’#3479f7’) ,里面的参数可以自己设定
图形展示:
x = np.linspace(-10,10,50)
y1 = 2*x + 1
y2 = x**x
plt.figure()
plt.plot(x,y1)
plt.plot(x,y2,linestyle='dashed',linewidth=0.5,color='red',marker='.',)
plt.xlim(1,3)
plt.xlabel('value of X')
plt.xticks(np.linspace(1,3,11))
plt.show()
注:
1.使用plt.xlim/ylim两个方法可以分别设置x轴和y轴的范围。用法就是xlim(min,max)。
2.使用plt.xlabel和ylabel可以设置x/y轴的说明文字。
3.使用plt.xticks/yticks两个方法可以分别设置X和Y轴的坐标点的值是多少。除了简单的数值设置外,xticks/yticks还支持label设置。比如xticks([1,2,3,4],[‘bad’,‘ok’,‘good’,‘verygood’])这样的方式,来将数值坐标值和文字描述的坐标值一一对应起来。
补充:
1.plt.gca()
这个方法返回一个包含所有坐标轴的对象。gca的全称估计是get current axes,也就是获取到当前所有坐标轴。
其中比较重要的一条属性是spines**,这个属性是一个字典,可以有left,right,top,bottom的取值分别对应一个图的四条边。
ax = plt.gca()
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
ax.spines['left'].set_position(('data',0))
ax.spines['bottom'].set_position(('data',0))
2.plt.legend()
图例出现的位置默认是在左下方,可以在legend方法中用loc参数指明具体的位置。比如**plt.legend(loc=‘upper right’)**是出现在右上角。类似的参数值还有lower right,center left等等。此外还有一个best,这个值是说把位置自动交给电脑去判断,尽量选择一个不挡住任何东西的好的位置。
3.plt.scatter()
用来做散点图,
import matplotlib.pyplot as plt # 换个名字
import numpy as np
n = 1024 # data size
X = np.random.normal(0, 1, n) # 每一个点的X值
Y = np.random.normal(0, 1, n) # 每一个点的Y值
T = np.arctan2(Y,X) # for color value
plt.figure()
ax = plt.gca()
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
plt.scatter(X,Y,c=T,s=20) #c代表设置颜色
plt.xlim(-0.5,0.5)
plt.show()
使用subplot()方法
plt.subplot(2,2,1)
利用subplots()与twins()方法
import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(-2,2,0.1) # np.arange()函数返回一个有终点和起点的固定步长的排列
y1 = list(map(math.exp,x)) #注意遇到map要和list一起使用
y2 = -1*np.array(y1)
fig, left_ax = plt.subplots() # 获取当前的坐标,是第二个返回对象
right_ax = left_ax.twinx() # twinx生成另一个坐标对象,复制对象
left_ax.plot(x,y1,color='blue')
left_ax.set_ylabel('value of Y1',color='blue')
right_ax.plot(x,y2,color='green')
right_ax.set_ylabel('value of Y2',color='green')
plt.show()