数据分析——matplotlib的用法
Matplotlib是一个强大的Python绘图和数据可视化的工具包。数据可视化也是我们数据分析的最重要的工作之一,可以帮助我们完成很多操作,例如:找出异常值、必要的一些数据转换等。完成数据分析的最终结果也许就是做一个可交互的数据可视化
安装方式: pip install matplotlib
引用方法:import matplotlib.pyplot as plt
一、plot函数(绘制折线图)
- 线型linestyle(-,-.,--,..)
- 点型marker(v,^,s,*,H,+,X,D,O,...)
- 颜色color(b,g,r,y,k,w,...)
# 解决乱码问题(中文不显示)
plt.rcParams['font.sans-serif'] = ['SimHei']
x = [1,2,3] y = [2,4,9] plt.figure(figsize=(20,6)) #设置画布的大小 plt.title('标题', fontsize=20, color='red') #设置标题 plt.xlabel('x轴', fontsize=15) #设置x轴名称 plt.ylabel('y轴', fontsize=15) #设置y轴名称 # plt.plot? # plt.plot(x,y, color='green', marker='v', linestyle='--') plt.plot(x, y) plt.show()
图像标注
方法 | 描述 | |
---|---|---|
plt.title() | 设置图像标题 | |
plt.xlabel() | 设置x轴名称 | |
plt.ylabel() | 设置y轴名称 | |
plt.xlim() | 设置x轴范围 | |
plt.ylim() | 设置y轴范围 | |
plt.xticks() | 设置x轴刻度 | |
plt.yticks() | 设置y轴刻度 | |
plt.legend() | 设置曲线图例 |
plt.plot([0,3,9,15,30],linestyle = '-.',color = 'r',marker = 'o',label="A") plt.plot([1,3,16,23,30],[30,23,13,25,30],label='B') plt.title("Title") # 标题 plt.xlabel('X') # x轴名称 plt.ylabel('Y') # y轴名称 plt.xticks(np.arange(0,30,2)) # x轴刻度 plt.xlim(-0.2,10,2) # x轴范围 plt.legend() # 曲线图标 plt.show()
支持的图类型
函数 | 说明 | |
---|---|---|
plt.plot(x,y,fmt) | 折线图 | |
plt.boxplot(data,notch,position) | 箱型图 | |
plt.bar(left,height,width,bottom) | 柱状图 | |
plt.barh(width,bottom,left,height) | 横向柱状图 | |
plt.polar(theta,r) | 极坐标系 | |
plt.pie(data,explode) | 饼图 | |
plt.psd(x,NFFT=256,pad_to,Fs) | 功率谱密度图 | |
plt.specgram(x,NFFT=256,pad_to,F) | 谱图 | |
plt.cohere(x,y,NFFT=256,Fs) | X-Y相关性函数 | |
plt.scatter(x,y) | 散点图 | |
plt.step(x,y,where) | 步阶图 | |
plt.hist(x,bins,normed) | 直方图 |
二.柱状图
x = movies.index #索引值 y = movies.values #数据值 plt.figure(figsize=(15,6)) #设置画布大小 plt.bar(x, y, color='blue') #柱状图用bar plt.title('每个国家或者地区的电影数量') plt.xlabel('国家或地区', fontsize=20) plt.ylabel('电影数量', fontsize=20) plt.xticks(rotation=90, fontsize=15) #x轴数据旋转90度 # plt.text? for a,b in zip(x,y): plt.text(a, b+100, b, ha='center') #柱状图上面的文字 plt.show()
三.饼图
饼图是计算某一范围内数据的百分比,那么先要切分统计每个范围内的数据百分比
先切分,使用cut
data = pd.cut(s.astype('float'), [0,60,90,110,1000]).value_counts()
使用pie做饼状图
x = data.index y = data.values plt.figure(figsize=(10,6)) plt.title('电影时长分布图') patchs, l_text, p_text = plt.pie(y, labels=x, autopct='%0.2f%%', colors='bgry', startangle=90) for i in p_text: i.set_size(15) i.set_color('w') #饼状图内百分比样式设计 for l in l_text: l.set_size(20) l.set_color('r') #饼状图外范围设计 plt.show()
四.保存图表
plt.savefig('123.pdf')