概述
众所周知matplotlib是最大的,最老的,也是最强壮的Python可视化库。所以是咱们做Python可视化不行忽略的一个库。这儿给咱们一个学Python可视化的学习路径引荐,我觉得是这样的比较好:首要matplotlib其次seaborn,接着才是boken,pyecharts这些。理由便是matplotlib是根底,seaborn是进阶,pyecharts是出山大约便是这样。OKOK,接下来咱们看看matplotlib的具体内容吧,欢迎走进数据之美–数据可视化的magic。
内容
准备工作
allright,allright。一切的操作开端之前你要记住先学好numpy和pandas再来哦。然后导入咱们的matplotlib库。
- 经过Jupyter的魔法命令
%matplotlib inline
能够直接在jupyter notebook中展现图表,不需求每个图表都是用plt.show()
来展现来~ -
import matplotlib.pyplot as plt
做完这两步就能够开端咱们的画图了。
根底图表
经过plt.subplot()
命令来创立Figure
和Axes
,axes
是咱们绘图的坐标系,figure
是咱们绘图的窗口,这也是在Matplotlib非常重要的两个概念;
- Figure:顶层级,一切图表的容器,咱们能够理解为窗口(Pyecharm等IDE中是弹出的窗口,Jypyter中为内嵌的窗口),一个Figure中能够包括多个Axes;
-
Axes:坐标系,也便是对应咱们画的每一个图表,在Axes咱们能够对图表的坐标轴(
axis
),刻度值(Tick
)等进行操作; - figure, axes = plt.subplots() # 创立一个包括一个axes的figure
-
柱形图:
plt.bar()
-
条形图:
plt.barh()
-
折线图:
plt.plot()
-
面积图:
plt.stackplot()
-
饼图:
plt.pie()
-
散点图:
plt.scatter()






图表元素
-
修正画布尺度:
plt.figure(figsize=(8, 6))
-
修正中文字体:Matplotlib中遇到中文显现方块的问题,能够经过
plt.rcParams['font.sans-serif'] = 'Microsoft YaHei'
解决,咱们还能够设置的中为字体有SimSun(宋体),SimHei(黑体),Kaiti(楷体)等。 -
增加图表标题:经过plt.title能够在Matplotlib设置标题,字体款式能够经过fontdict进行设置;经过loc参数能够设置标题显现方位,支撑的参数有center(居中),left(靠左),right(靠右)显现。
- plt.title(“销售趋势图”, fontdict={‘family’:’Microsoft YaHei’, ‘color’: ‘k’, ‘size’: 15}, loc=’left’)
-
增加坐标轴标题:经过plt.xlabel和plt.ylabel能够别离增加x轴和y轴的标题,相同能够经过fontdict进行字体款式的装备,labelpad能够设置坐标轴与标题之间的间隔。
- plt.xlabel(“月份”, fontdict={‘family’:’Microsoft YaHei’, ‘color’: ‘k’, ‘size’: 12}, labelpad=10)
- 增加图例:经过plt.legend能够给图表增加图例,图例一般用来阐明图表中数据每个系列的数据的;经过plt.plot()制作折线的时候,需求经过label参数设置该系列数据的称号,后续才能经过
plt.legend
增加。 -
增加数据标签:能够经过plt.text对图表增加文本,但是一次只能增加一个点,所以假如要给每个数据项都增加标签的话,咱们需求经过for循环来进行。plt.text 有三个重要的参数:x、y 、s,经过x和y确认显现方位,s为需求显现的文本,别的还有va和ha两个参数设置文本的显现方位(靠左、靠右、居中等);
- for a,b in zip(x, y1):
plt.text(a, b, b, va=’bottom’, fontdict={“size”:14})
- for a,b in zip(x, y1):
-
增加网格线:经过能够增加网格线能够便利用户简单看出数据项的大致值,经过上述展现一切数据标签时,可能会让整个图表比较凌乱,咱们能够选择运用网格线来展现数据项大致数据值;参数b为True时展现网格线,axis支撑x、y、both三个值,别离表明展现纵向网格线,横向网格线和纵向横向都展现。
- plt.grid(b=True, axis=’y’, linestyle=’–‘, linewidth=1,)
-
坐标轴规模:能够经过plt.ylim和plt.xlim别离对y轴和x轴的坐标规模进行装备。
- plt.ylim(50, 300)
-
图表风格:Matplotlib中也预制了许多图表的款式风格,能够经过
plt.style.use('default')
来设置图表的风格,Matplotlib支撑的风格包括26种,不过说实话,我觉得都不咋行挺丑的。
杂乱图表
-
多图:
plt.subplot(2, 2, 1)
或许axes[0][0].bar(x, y)
,像上面根底图表的第一张图便是我现画的一张多图。 -
不均匀子图:咱们能够经过.add_gridspec()将整个画布划分红不均匀的区域。
- spec = fig.add_gridspec(nrows=2, ncols=2, width_ratios=[1, 3], height_ratios=[1,2]) 表明将整个画布裁剪为2行2列的区域,width_ratios=[1, 3]表明横向将两列的宽度依照1:3进行裁剪,同理height_ratios=[1,2]表明纵向依照1:2进行裁剪。
- spec还支撑切片的办法,譬如咱们将第二行展现为整个条形图;adjust能够调整各区域之间的间隔。
-
增加元素:ax子图相同能够经过set_title、set_xlable等办法增加子图标题,坐标轴标题等,假如需求增加大标题能够经过
fig.suptitle()
来完结;
-
双Y轴:当咱们多个系列的数据值量级差别太大时,依赖同一个坐标轴来展现一般作用很差,比如需求将销售额和利润一起展现出来;这时候咱们能够经过
plt.twix()
增加次坐标轴。别的需求留意一点,twinx或许twiny办法会回来一个共享x轴或许y轴的新的axes,假如咱们经过plt.subplots生成ax后,再制作第二个折线图时,需求在这个新生成的ax1上绘图。 -
增加阴影:
path_effects=[path_effects.SimpleLineShadow(),path_effects.Normal()]
-
增加符号:假如咱们想给图表某部分内容增加一些注释,咱们能够经过plt.annotate()进行增加,其间几个主要参数:
-
xy:需求咱们传入数组,如xy=(1,2),用于定位要符号的方位;
-
xycoords:设置xy是经过何种办法去进行定位,比如data表明运用坐标轴刻度值去进行定位;
-
xytext:提示文本要展现的方位;
-
textcoords:同xycoords,设置xytext经过何种何种办法去进行定位
-
-
colormap 色表:Matplotlib中内置许多配色办法,能够经过代码matplotlib.cm.get_cmap运用;其实Matplotlib中的配色计划咱们还能够轻松应用到其他第三方模块中;支撑的配色计划能够点击matplotlib.org/2.0.2/examp… 进行查看




总结
总的来说,matplotlib很全面很丰富还有许多我没有探求的,值得持续学习,数据可视化之路才刚刚开端,遥看未来我的眼中是斑斓的美,愈加艳丽的画,还有包含其间的数据之美。