Matplotlib
Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。
Matplotlib的基本使用
使用Matplotlib绘图时,主要使用plot函数,下面是一个简单的绘制:
import matplotlib.pyplot as plt
plt.plot([1,2,3,4],[-4,-3,-2,-1])#输入参数类型为列表型的
plt.show()
绘制结果:
当然也可以结合numpy,生成数据,存入磁盘。并进行数据读取。
import numpy as np
x = np.random.randint(0,100,50)
np.savetxt("a.csv",x,"%d")
y = np.loadtxt("a.csv")
print(np.max(y),y.mean())
同时这里利用上证指数的文件,对文件中的数据进行可视化,计算每天的股票的最高价减去最低价。并可视化昨天的,与今天的关系。上证指数、代码实现如下:
import numpy as np
import matplotlib.pyplot as plt
low,high = np.loadtxt("0000001.csv",delimiter=",",skiprows=1,usecols=(4,5),unpack=True)
diff = high-low
yesterday = diff[:-1]
today = diff[1:]
#s对应面积,c对应颜色,marker对应点的形状,alpha对应饱和度
plt.scatter(yesterday,today,s=10,c="r",marker="<",alpha=0.5)
plt.show()
绘制结果:
绘制饼图:
使用pie函数,该函数可以有很多的控制参数,可以设置突出,百分占比等;
import matplotlib.pyplot as plt
labels = "A","B","C","D"
fracs = [15,30,45,10]#各label大小
explode = [0,0.1,0,0]#设置突出显示
#x:数据大小,label:各数据的标签,autopct:显示百分比,且设置精确度,explode:突出显示设置,shadow:阴影启动
plt.pie(x = fracs,labels = labels,autopct="%.1f%%",explode=explode,shadow=True)
plt.show()
绘制结果:
条形图:
pyplot 子模块提供 bar() 函数来生成条形图。
import matplotlib.pyplot as plt
x =[5,8,10]
y = [12,16,6]
x2 = [6,9,11]
y2 = [6,15,7]
plt.bar(x,y,align='center')
plt.bar(x2,y2,color='g',align='center')
plt.title('条形图')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
绘制结果:
直方图:
Matplotlib 可以将直方图的数字表示转换为图形。 pyplot 子模块的 plt() 函数将包含数据和 bin 数组的数组作为参数,并转换为直方图。
import matplotlib.pyplot as plt
import numpy as np
a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27])
plt.hist(a,bins=[0,20,40,60,80,100],normed=0,facecolor='blue',edgecolor='black',alpha=0.7)
plt.title("histogram")
plt.show()
绘制结果:
修改坐标轴的刻度:
使用locator_params函数。使用代码如下:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(1,10,1)
plt.plot(x,x)
ax = plt.gca()
ax.locator_params("y",nbins=10)
plt.show()
在同一张图上绘制多个坐标轴:
使用子模块的twinx()函数生成即可,使用代码如下:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(2,20,1)
y1 = x*x
y2 = np.log(x)
plt.plot(x,y1)
plt.ylabel("Y1")
plt.locator_params("y",nbins=20)
plt.twinx()
plt.plot(x,y2,'r')
plt.ylabel("Y2")
plt.locator_params("y",nbins=5)
plt.show()