Matplotlib可视化没那么难:7种常用图表最全绘制攻略来了!
大数据DT
共 8302字,需浏览 17分钟
·
2021-05-29 09:10
导读:绘图是数据分析工作中的重要一环,是探索过程的一部分。Matplotlib是当前用于数据可视化的最流行的Python包之一,本文主要介绍数据可视化分析工具:Matplotlib。
plt.figure:创建空白画布,在一幅图中可省略 figure.add_subplot:第一个参数表示行,第二个参数表示列,第三个参数表示选中的子图编号 plt.title:标题 plt.xlabel:x轴名称 plt.ylabel:y轴名称 plt.xlim:x轴的范围 plt.ylim:y轴范围 plt.xticks:第一个参数为范围,数组类型;第二个参数是标签,第三个是控制标签 plt.yticks:同plt.xticks plt.legend:图例 plt.savafig:保存图形 plt.show:在本机显示
x/y:X/Y轴数据。两者都是向量,而且必须长度相等。 s:标记大小,可自定义 c:标记颜色,可自定义 marker:标记样式,可自定义
代码清单1 绘制散点图
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(30)
y = np.arange(30)+3*np.random.randn(30)
plt.scatter(x, y, s=50)
plt.show()
x:数据源 height:bar的高度 width:bar的宽度,默认0.8 bottom:y轴的基准,默认0 align:x轴的位置,默认中间,edge表示将bar的左边与x对齐 color:bar颜色 edgecolor:边颜色 linewidth:边的宽度,0表示无边框
代码清单2 绘制条形图
a = ['战狼2', '速度与激情8', '功夫瑜伽', '西游伏妖篇', '变形金刚5:最后的骑士', '摔跤吧!爸爸', '加勒比海盗5:死无对证','金刚:骷髅岛', '极限特工:终极回归', '生化危机6:终章']
# 单位:亿
b=[56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12]
# 用来正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei','Times New Roman']
plt.rcParams['axes.unicode_minus']=False
# bar要求传递两个数字,可以单独设置x轴的显示
plt.bar(range(len(a)), b, width=0.3)
plt.xticks(range(len(a)), a, rotation=90) #字体倾斜角度
plt.grid(False)
plt.show()
x/y:数据源 color:字体颜色:color=‘r’;b、g、r、c、m、y、k、w 或者blue、green、red、cyan、magenta、yellow、black、whtite 或十六进制字符串(’#008000’) linewidth:线条粗细,可自定义 linestyle:线条形状:linestyle=’–’(虚线);linestyle=’:’(点线);linestyle=’-.’(短线加点); label:数据标签内容:label=‘数据一’,数据标签展示位置需另说明plt.legend(loc=1)数字为标签位置
代码清单3 绘制折线图
import matplotlib.dates as mdate
dateparse = lambda dates:pd.datetime.strptime(dates,'%Y%m%d')
data = pd.read_csv('req_user.csv',encoding='utf-8',parse_dates=['date'],date_parser=dateparse)
plt.figure(figsize=(10,7))
plt.plot(data["date"],data['req_user'])
plt.xlabel('date',fontsize=15)
plt.ylabel('req_user',fontsize=15) #图例字体大小
plt.tick_params(labelsize=10) #刻度字体大小
plt.show()
x:数据源 labels:(每一块)饼图外侧显示的说明文字 explode:(每一块)离开中心距离 startangle:起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起 shadow:在饼图下面画一个阴影。默认值:False,即不画阴影 labeldistance:label标记的绘制位置,相对于半径的比例,默认值为1.1, 如<1则绘制在饼图内侧 autopct:控制饼图内百分比设置,可以使用format字符串或者format function,'%1.1f'指小数点前后位数(没有则用空格补齐) pctdistance:类似于labeldistance,指定autopct的位置刻度,默认值为0.6 radius:控制饼图半径,默认值为1 textprops:设置标签(labels)和比例文字的格式;字典类型,可选参数,默认值为:None。传递给text对象的字典参数 center:浮点类型的列表,可选参数,默认值:(0,0),图标中心位置。
代码清单4 绘制饼图
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
labels = ['娱乐','育儿','饮食','房贷','交通','其他']
sizes = [4,10,18,60,2,6]
explode = (0,0,0,0.1,0,0)
plt.figure(figsize=(10,7))
plt.pie(sizes,explode=explode,labels=labels,autopct='%1.1f%%',shadow=False,startangle=150)
plt.title("饼图示例-10月份家庭支出")
plt.show()
x:数据源 bins:分块数,默认10 range:画图范围,接收元组 cumulative:每一列累加 bottom:bin的基线 histtype:画图的形状,默认是bar align:bar中心位置,默认中间 orientation:水平或垂直,默认垂直 rwidth:bar的宽度 color:表示bar的颜色 label:bar的标签;也可以在图例中写plt.legend() edgecolor:直方图的边界色
代码清单5 绘制直方图
# 导入第三方包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
# 中文和负号的正常显示
plt.rcParams['font.sans-serif'] = [u'SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 读取Titanic数据集
titanic = pd.read_csv('train.csv')
# 检查年龄是否有缺失
any(titanic.Age.isnull())
# 删除含有缺失年龄的样本
titanic.dropna(subset=['Age'], inplace=True)
# 设置图形的显示风格
plt.style.use('ggplot')
# 绘图
plt.hist(titanic.Age,
bins = 20,
color = 'steelblue',
edgecolor = 'k',
label = '直方图' )
# 去除图形顶部边界和右边界的刻度
plt.tick_params(top='off', right='off')
# 显示图例
plt.legend()
# 去除网格线
plt.grid(False)
plt.show()
x:指定要绘制箱线图的数据 showcaps:是否显示箱线图顶端和末端的两条线 notch:是否是凹口的形式展现箱线图 showbox:是否显示箱线图的箱体 sym:指定异常点的形状 showfliers:是否显示异常值 vert:是否需要将箱线图垂直摆放 boxprops:设置箱体的属性,如边框色,填充色等 whis:指定上下须与上下四分位的距离 labels:为箱线图添加标签 positions:指定箱线图的位置 filerprops:设置异常值的属性 widths:指定箱线图的宽度 medianprops:设置中位数的属性 patch_artist:是否填充箱体的颜色 meanprops:设置均值的属性 meanline:是否用线的形式表示均值 capprops:设置箱线图顶端和末端线条的属性 showmeans:是否显示均值 whiskerprops:whiskerprops设置须的属性
代码清单6 绘制箱形图
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.rand(10,5),columns=['a','b','c','d','e'])
# 绘图
plt.boxplot(df,patch_artist=True) #默认垂直摆放箱体
plt.show()
nrows:subplot的行数 ncols:subplot的列数 sharex:所有subplot应该使用相同的X轴刻度(调节xlim将会影响所有的subplot) sharey:所有subplot应该使用相同的Y轴刻度(调节ylim将会影响所有的subplot) subplot_kw:用于创建各subplot的关键字字典 **fig_kw:创建figure时的其他关键字,如plt.subplots(3,3,figsize=(8,6))
代码清单7 绘制组合图
from numpy.random import randn
import matplotlib.pyplot as plt
#在同一个figure中创建一组2行2列的subplot
fig = plt.figure()
ax1 = fig.add_subplot(2,2,1) #表示4个subplot中的第一个
ax2 = fig.add_subplot(2,2,2) #表示4个subplot中的第二个
ax3 = fig.add_subplot(2,2,3) #表示4个subplot中的第三个
ax4 = fig.add_subplot(2,2,4) #表示4个subplot中的第四个
ax1.scatter(np.arange(30),np.arange(30)+3*randn(30))
ax2.bar(np.arange(8),[1,2,3,7,8,5,6,4])
ax3.hist(randn(100),bins=20)
ax4.plot(randn(60).cumsum())
plt.show()
代码清单8 使用循环语句绘制组合图
fig,axes = plt.subplots(2,2,sharex=True,sharey=True)
for i in range(2):
for j in range(2):
axes[i,j].plot(randn(100).cumsum())
plt.subplots_adjust(wspace=0,hspace=0) #用于调整subplot周围的间距
plt.show()
评论