matplotlib学习
专门整理一下mpl主要是想过一下作图中所有的可变元素,方便自定义作图,对后面学具体图或者seaborn等有帮助,mpl有两种接口,一种是模仿matlab实现的接口pyplot(plt),另一种是面向对象的。
目前的许多实现教程大部分没有区分这两种接口,很多时候都在混用,使得想要掌握mpl全貌不是很方便。但自己学可视化主要不是扩展API的名字用法,主要还是想扩展更多的可视化图。
这个github项目^4感觉写得不错,细节可以参考这个
组件目录
- Matplotlib
- 容器类:图(figure)、坐标系(axes)、坐标轴(axis)、刻度(tick)
- 主要是图外的辅助内容,与数据无关
- 基础类:线(line)、点(marker)、文字(text)、图例(legend)、网格(grid)、标题(title)
- 需要结合数据进行维护的内容
- 容器类:图(figure)、坐标系(axes)、坐标轴(axis)、刻度(tick)
主要内容
matplotlib有一套完全仿照MATLAB的函数形式的绘图接口,在matplotlib.pyplot模块中。这套函数接口方便MATLAB用户过度到matplotlib包。
基本流程
- 创建figure实例;
- 在figure上创建axes;
- 在axes上添加基础类对象。
准备
# !pip install brewer2mpl
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
import warnings; warnings.filterwarnings(action='once')
large = 22; med = 16; small = 12
params = {'axes.titlesize': large,
'legend.fontsize': med,
'figure.figsize': (16, 10),
'axes.labelsize': med,
'axes.titlesize': med,
'xtick.labelsize': med,
'ytick.labelsize': med,
'figure.titlesize': large}
plt.rcParams.update(params)
plt.style.use('seaborn-whitegrid')
sns.set_style("white")
%matplotlib inline
展示
plt.gca().set(xlim=(0.0, 0.1), ylim=(0, 90000),
xlabel='Area', ylabel='Population') # gca == get current axes
plt.xticks(fontsize=12); plt.yticks(fontsize=12)
plt.title("Bubble Plot with Encircling", fontsize=22)
plt.legend(fontsize=12)
plt.show()
Fig
建立一个fig(matlab式的代码可以不用加这个,这里是为了配置一些参数)
plt.figure(figsize=(16, 10), dpi= 80, facecolor='w', edgecolor='k')
颜色控制
plt.cm中有许多色带,可供我们选择,使用方法就是plt.cm.tab10(float_between_0_and_1)
colors = [plt.cm.tab10(i/float(len(categories)-1)) for i in range(len(categories))]
有些作图函数有cmap参数只需要传cm中的类名就可以
ax_main.scatter('displ', 'hwy', s=df.cty*4, c=df.manufacturer.astype('category').cat.codes, alpha=.9, data=df, cmap="tab10", edgecolors='gray', linewidths=.5)
matplotlib-cheatsheet
样式讲得挺详细的
常见图
Scatter
plt.scatter('area', 'poptotal', data=midwest.loc[midwest.category==category, :], s='dot_size', c=colors[i], label=str(category), edgecolors='black', linewidths=.5) # eg
参数名 | 作用 |
---|---|
data | 传一个dataFrame,此时需要指定要用的column名称 |
s | 大小 |
c | 颜色 |
label | 指定这组散点的名称 |
edgecolors | 散点边缘颜色 |
linewidths | 散点边缘宽度 |
- pie
- plot
- imshow
- contour
- text
- fill
- step
- boxplot
- hist
- violinplot
- barbs
- eventplot
- hexbin
- xcorr