我的Python分析成长之路10
matplot数据可视化基础
制作提供信息的可视化(有时称作绘图)是数据分析中最重要任务之一。
1.图片(画布)与子图
plt.figure :创建一张空白的图片,可以指定图片的大小、像素。
figure.add_subplot:添加子图,可以指定子图的行数、列数和选中图片的编号。
如果使用plt.subplots(),它创建了一张图片,然后返回包含了已生成子图对象的Numpy数组
plt.subplots选型:
nrow:子图的行数
ncols:子图的列数
sharex:所有子图使用相同的x轴刻度
sharey:所有子图使用相同的y轴刻度
1 import numpy as np 2 import matplotlib.pyplot as plt 3 plt.rcParams["font.sans-serif"] = "SimHei" #设置中文显示 4 plt.rcParams["axes.unicode_minus"] = False #设置正常符号 5 #没有子图的绘图 6 x = np.arange(0,1,0.01) 7 y = x**2 8 y2 = x**4 9 plt.plot(x,y) 10 plt.plot(x,y2) 11 plt.show() 12 #有子图的绘制方法 13 fig = plt.figure(figsize=(8,5)) 14 ax1 = fig.add_subplot(2,1,1) 15 ax1.plot(x,y) 16 ax2 = fig.add_subplot(2,1,2) 17 ax2.plot(x,y2) 18 plt.show() 19 #用plt.subplots方法 20 fig,axes = plt.subplots(2,1,sharex=True) 21 axes[0].plot(x,y) 22 axes[1].plot(x,y2) 23 plt.show()
2.添加各类标签和图例的常用函数
plt.title 为当前图形添加标题,可以指定标题的名称、位置、颜色、大小等参数
plt.xlabel 为当前图形添加x轴名称,可以指定位置、颜色、大小等参数
plt.ylabel:为当前图形添加y轴名称,可以指定位置、颜色、字体大小等参数
plt.xlim:指定当前图形x轴的范围,只能确定一个数值区间,而无法使用字符串标识
plt.ylim:指定当前图形y轴的范围,只能确定一个数值区间,而无法使用字符串标识
plt. xticks:指定x轴数目与取值
plt.yticks:指定y轴刻度的数目与取值
plt.legend:根据当前图形的图例,可以指定图例的大小、位置、标签。
plt.savefig("filename"):保存图片
text/arrow/annote方法添加注释和文本
1 import numpy as np 2 import matplotlib.pyplot as plt 3 plt.rcParams["font.sans-serif"] = "SimHei" 4 plt.rcParams["axes.unicode_minus"] = False 5 x = np.arange(0,1,0.01) 6 y1 = x**2 7 y2 = x**4 8 plt.plot(x,y1,"g--") 9 plt.plot(x,y2,"b-") 10 plt.xlabel("x") #设置x轴类标 11 plt.ylabel("y") #设置y轴类标 12 plt.xlim([0,1]) #设置x范围 13 plt.ylim([0,1]) #设置y范围 14 plt.title("x**2和x**4函数") #添加标题 15 plt.legend(["Y1","Y2"],loc="best") # 16 plt.show()
3.设置pyplot的rc参数
lines.linestyle:线条样式
lines.line线条宽度
lines.marker:线条上的点的形状
lines.markersize:点的大小
4.分析特征间的相互关系
1.柱状图:
plot.bar():绘制垂直方向上的柱状图
plot.barh():绘制水平方向上的柱状图
1 import matplotlib.pyplot as plt 2 import pandas as pd 3 fig,axes = plt.subplots(2,1) 4 data = pd.Series(np.random.rand(16),index=list("abcdefghijklmnop")) 5 data.plot.bar(ax=axes[0],color='k') 6 data.plot.barh(ax=axes[1],color="r") 7 plt.show() 8 df = pd.DataFrame(np.random.rand(6,4),index=["one","two","three","four","five","six"], 9 columns=pd.Index(["a","b","c","d"],name="Genus")) 10 df.plot.bar() 11 df.plot.barh(stacked=True) 12 plt.show()