matplot笔记
要点理解
- matplot和pandas.plot的区别
- pandas.plot可以一行作图,语法与matplot基本兼容,功能上受限
- 建议还是要先熟悉matplot,使用时若pandas.plot能解决问题就优先使用
- pandas.plot类似于lambda函数,虽然功能受限,但是简洁
- matplot和seaborn的区别
- 十分钟掌握Seaborn,进阶Python数据可视化分析
- Seaborn的底层是基于Matplotlib的,把常用到的可视化绘图过程进行了函数封装,形成的一个“快捷方式”,他相比Matplotlib的好处是代码更简洁,可以用一行代码实现一个清晰好看的可视化输出。
- 使用matplot绘制多数据系列的语法较为繁琐,这种情况下可以使用下Seaborn
- 内嵌了一些算法模型,可以自动进行拟合与趋势分析
- 默认的画图效果确实比matplot好看多了,不过网上有人不建议使用seaborn,matplotlib更加灵活
最重要的函数plot
详解pandas.DataFrame.plot() 画图函数
有用的几个功能
- subplots 多个子图
- figsize设定图片大小
- 用中文的要先解决ubuntu下中文乱码的问题
- 几个常用的概念:
- tittle 设定标题
- label plot时对应的标签
- legend 图例,通过开关把label显示出来,如果label没有设置,legend也无效
- xticks、yticks 表示刻度
- grid表示网格
- rot表示x轴的选择角度
最好的入门材料
官方Usage Guide入门样例
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots() # Create a figure containing a single axes.
ax.plot([1, 2, 3, 4], [1, 4, 2, 3]) # Plot some data on the axes.
兼容MATLAB的语法
fig = plt.figure() # an empty figure with no Axes
# plot([1, 2, 3, 4], [1, 4, 2, 3]) % MATLAB plot.
ax= fig.add_subplot( 行,列,位置标) # 增加一个子图
plt.plot([1, 2, 3, 4], [1, 4, 2, 3]) # Matplotlib plot.
步骤说明:
- 在画图时,要注意首先定义画图的画布:fig = plt.figure( )
- 然后定义子图ax ,使用 ax= fig.add_subplot( 行,列,位置标)
- 当上述步骤完成后,可以用 ax.plot()函数或者 df.plot(ax = ax)
- 结尾时都注意记录上plt.show()
更简洁的官方样例说明:
- 第一步和第二步可以合并
- 在jupyter中交互模型(matplotlib.is_interactive())下不需要执行plt.show就能显示
- matplot最少2行代码就可以完成。(如果是pandas.plot的话,更简化到一行,当然pandas.plot也是基于matplot的)
重要的样例
- 最简单的线图
- 绘制多个子图subplots:注意subplots和subplot的区别,没必要使用subplot
- 显示图片imshow
- 轮廓和伪彩色Contouring and pseudocolor
-
直方图histogram
- 绘制直方图,就不如用seaborn了
- 绘制路径、心形图paths
- 绘制3D
- 交互类的图,建议还是用pyecharts
- 流式Streamplot
-
椭圆ellipse
- 一般不会用到的
-
定制条形图
- 例子太复杂了,这个场景还不如尝试下seaborn呢
-
饼图
- 这个例子还挺简单
-
表
- 多维数据用图+表一起显示,内容更丰富
- 有大小的散点图
-
GUI组件
- 代码比较多,可以做一些高级视图
- 填充
-
时间序列
- 经常用的东西
-
指数坐标
- 经常碰到数据差别比较大的,采用指数坐标可以看得更清楚些
-
极坐标:
- 一般没用场景会涉及到
-
图例legend
- 与matlab兼容的图例用法
- ax.plot做图时要先设置label,再通过legend开关是否显示图谱
-
Tex语法:
- 做图时需要标注公式时,可以通过tex语法把公式写上去
- 基本不会用到,个别情况下会plot做图,然后再拼接到ppt中
- XKCD风格
- 通过with plt.xkcd()实现,其它是一样的
- python的with是一种上下文管理协议,有一些任务,需要事先做一些设置,事后做一些清理,with能够对这样的需求进行一优雅的处理
- 打开
xkcd<https://xkcd.com/>
_草图样式绘图模式,为了获得最佳效果,应该安装“Humor Sans”字体
- 通过with plt.xkcd()实现,其它是一样的
axes和axis的区别
发音:坐标系-axes [ 'æksi:z ] 坐标轴axis [ 'æksis ]
python matplotlib中axes与axis的区别是什么?
- Figure (图窗)
- Subplot (子图)
- Axes (笛卡尔坐标区)坐标系
- Axis (坐标轴)
- Plot (线图)