1. Matplotlib
1.1 matplotlib库
常用导入模板
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
sns.set(style='darkgrid',font_scale=1.3)
plt.rcParams['font.family']='SimHei'
plt.rcParams['axes.unicode_minus']=False
1.1.1 绘图
| 函数/方法 | 描述 |
---|
导入 | import matplotlib.pyplot as plt | 导入pyplot |
| %matplotlib inline | 图表嵌入到Notebook中 |
| %matplotlib notebook | 图表嵌入到Notebook中 |
| from matplotlib import gridspec | 不均匀布局模块 |
字体设置 | from matplotlib.font_manager import FontManager | 导入电脑字体 |
| fm = FontManager() | 字体实例化 |
| mat_font = set(f.name for f in fm.ttflist) print(mat_font) | 打印字体列表 |
绘图 | plt.plot(x,y,x,y1…) | 二维曲线绘图,x默认为绘制点(即y元素)的个数 |
散点图 | plt.scatter(x,y,c,s,cmap=plt.cm) | 绘制散点图,设置散点颜色、散点大小、颜色映射 |
饼图 | plt.pie(x,labels,radius,autopct,explode,shadow) | 绘制饼图,autopct设置百分比标签,explode指定突出的饼块 |
条形图 | plt.bar(x,y,bottom,yerr) | 绘制条形图 ,bottom设置堆叠,yerr设置误差条 |
直方图 | plt.hist() | 绘制直方图,方法同条形图 |
| count,bins,fig =plt.hist() | count表示统计次数,bins表示范围 |
极坐标图 | ax = plt.subplot(111,projection='polar’ 或者polar=‘True’) | 绘制极坐标图 |
| ax.plot(x,y) | 极坐标线性图 |
| ax.bar(x,y) | 极坐标条形图 |
箱式图 | plt.boxplot(arr,sym) | 箱式图,sym指定异常值样式 |
热力图 | plt.imshow(data,cmap) | |
面积图 | plt.stackplot([arr1,arr2,arr3…]) | 所有arr纵向聚合值应相等 |
绘制3D图形 | from mpl_toolkits3d.mplot3d.axes3d import Axes3D | 导入3D图形对象包 |
| ax3d = Axes3D(fig) | 3d建图 |
| ax3d.plot(x,y) | 3d绘图,改变plot()为其他方法可以绘制不同的图 |
1.1.2 图像、文字设置
| 函数/方法 | 描述 |
---|
图像设置 | plt.figure(figsize=(10,10)) | 设置图像尺寸,返回Figure数据,尽量放在画图函数plot前面 |
| plt.grid(linestyle,color,alpha) | 设置网格(样式、颜色、透明度) |
| plt.axis([xmin,xmax,ymin,ymax]) | 设置两轴取值的范围 |
| plt.xlim([xmin,xmax]) | 设置x轴取值的范围 |
| plt.ylim([ymin,ymax]]) | 设置y轴取值的范围 |
| plt.tick_params(axis=’both’) | 设置刻度性质 |
文字设置 | plt.xticks([刻度值],[刻度标识],fontsize) | 设置x轴刻度及其标签 |
| plt.yticks([刻度值],[刻度标识],fontsize) | 设置y轴刻度及其标签 |
| plt.xlable(‘lable’,rotation,fontsize) | 设置x轴标签 |
| plt.ylable(‘lable’,rotation,fontsize) | 设置y轴标签 |
| plt.legend([],loc) | 给图表打标注 |
| plt.text(x,y,s) | 任意位置(x,y)添加⽂字(s) |
| plt.title() | 设置标题 |
| plt.suptitle() | 设置标题 |
| plt.arrow() | 添加箭头 |
| plt.annotate(‘note’,xy=(2*np.pi,0),xytext,arrowprops) | 添加注释,xy指定注释位置,xytext指定文本位置,(arrowprops箭头可选) |
| plt.figtext() | 在Figure对象的任意位置添加⽂字 |
| plt.suptitle() | 为Figure对象添加中⼼化的标题 |
当中文字体不显示的时候,可以在绘图函数里设置textprops参数,如:
plt.pie(x,labels=labels,textprops={'family':'Kaiti SC','fontsize':18})
1.1.3 图像IO
| 函数/方法 | 描述 |
---|
图像操作 | plt.show() | 调用图表显示 |
| plt.savefig(‘name.png’,dpi,facecolor,edgecolor,bbox_inches) | 图表保存导出,像素密度,背景颜色,边界颜色,裁剪空白 |
| | plt.gca() | 获取当前轴面,返回AxesSubplot数据
1.1.4 Axes轴面设置
| 函数/方法 | 描述 |
---|
轴面设置 | ax = plt.gca() | 获取轴面(子视图) |
| ax.spines[‘right’].set_color() | 脊柱设置颜色 |
| ax.spines[‘bottom’].set_position() | 脊柱设置位置 |
| ax.set_facecolor() | 设置视图背景颜⾊ |
| ax.set_marker() | 设置视图数据点标识符 |
| ax.set_markerfacecolor() | 设置视图内部填充色彩 |
| ax.set_markeredgecolor() | 设置视图标识符边界色彩 |
| ax.set_markersize() | 设置视图标识符大小 |
| plt.sca(ax) | 对ax命名的视图进行设置 |
子视图 | ax = plt.subplot(2,2,2) 或者plt.subplot(222) | 创建子视图(两⾏两列第⼆个⼦视图) |
| ax.plot() | 子视图绘图 |
| plt.axes([left, bottom, width, height]) | 设置子视图位置,数值0~1之间 |
| ax = fig.add_axes([left, bottom, width, height]) | 设置子视图位置,数值0~1之间 |
多图布局 | fig,((ax11,ax12,ax13), (ax21,ax22,ax23),(ax31,ax32,ax33)) = plt.subplots(3, 3) | 均匀多图布局创建子视图,返回一个Figure和一个多子视图组成的元组 |
| gs = gridspec.GridSpec(3,3) ax = plt.subplot(gs[0,:]) | 不均匀多图布局 |
双轴显示 | ax2 = ax1.twinx() | 共用x轴,返回一个新的子视图 |
| ax2 = ax1.twiny() | 共用一个y轴 |
1.1.5 Figure对象设置
函数/方法 | 描述 |
---|
fig.set_figwidth() | 设置图像宽度 |
fig.set_figheight() | 设置图像高度 |
fig.add_axes([left, bottom, width, height]) | 设置子视图位置,数值0~1之间 |
1.2 plt.plot()属性设置图像风格和样式
颜色设置方式:
- [r,g,b],各颜色强度介于0~1;
- ‘red’颜色名;
- ‘#3c7f99’ 十六进制
- 多彩颜色,依据方法1,可按随机数生成:color = np.random.rand(n,3)
属性 | 描述 | 属性值 |
---|
Color | 设置线条或点的颜色 | 1.[r,g,b],各颜色强度介于0~1; 2.‘red’颜色名; 3.’#3c7f99’ 十六进制 |
LineStyle or ls | 线型 | 细实线、虚点线、点画线、虚画线 |
LineWidth or lw | 线条宽度/粗细 | 正实数,默认为0.5 |
Marker | 数据点标识符 | 菱形、空心圆圈等13种 |
MarkerSize | 标识符大小 | 正实数,默认为6 |
MarkerEdgeColor | 标识符边界色彩 | [r,g,b],各颜色强度介于0~1 |
MarkerFaceColor | 标识符内部填充色彩 | [r,g,b],各颜色强度介于0~1 |
MarkerEdgeWidth | 数据点边缘宽度 | 正实数 |
1.3 plt.rcParams
plt(matplotlib.pyplot)使用rc配置文件来自定义图形的各种默认属性,称之为rc配置或rc参数。
通过rc参数可以修改默认的属性,包括窗体大小、每英寸的点数、线条宽度、颜色、样式、坐标轴、坐标和网络属性、文本、字体等。rc参数存储在字典变量中,通过字典的方式进行访问。
序号 | 属性 | 说明 |
---|
| 最常用 | 导入模块时,可直接输入下面两个设置 |
1 | plt.rcParams[’axes.unicode_minus’] = False | 字符显示 |
2 | plt.rcParams[’font.sans-serif’] = ‘SimHei’ | 设置字体 |
| 线条样式:lines | |
3 | plt.rcParams[’lines.linestyle’] = ‘-.’ | 线条样式 |
4 | plt.rcParams[’lines.linewidth’] = 3 | 线条宽度 |
5 | plt.rcParams[’lines.color’] = ‘blue’ | 线条颜色 |
6 | plt.rcParams[’lines.marker’] = None | 默认标记 |
7 | plt.rcParams[’lines.markersize’] = 6 | 标记大小 |
8 | plt.rcParams[’lines.markeredgewidth’] = 0.5 | 标记附近的线宽 |
| 横、纵轴:xtick、ytick | |
9 | plt.rcParams[’xtick.labelsize’] | 横轴字体大小 |
10 | plt.rcParams[’ytick.labelsize’] | 纵轴字体大小 |
11 | plt.rcParams[’xtick.major.size’] | x轴最大刻度 |
12 | plt.rcParams[’ytick.major.size’] | y轴最大刻度 |
| figure中的子图:axes | |
13 | plt.rcParams[’axes.titlesize’] | 子图的标题大小 |
14 | plt.rcParams[’axes.labelsize’] | 子图的标签大小 |
| 图像、图片:figure、savefig | |
15 | plt.rcParams[’figure.dpi’] | 图像分辨率 |
16 | plt.rcParams[’figure.figsize’] | 图像显示大小 |
17 | plt.rcParams[’savefig.dpi’] | 图片像素 |
1.4 常用实参字符
标记字符
字符 | 描述 |
---|
‘.’ | 点标记 |
‘,’ | 像素标记 |
‘o’ | 圆标记 |
‘v’ | 下三角标记 |
‘^’ | 上三角标记 |
‘<’ | 左三角标记 |
‘>’ | 右三角标记 |
‘1’ | 下箭头标记 |
‘2’ | 上箭头标记 |
‘3’ | 左箭头标记 |
‘4’ | 右箭头标记 |
‘s’ | 正方形标记 |
‘p’ | 五角星标记 |
‘*’ | 星标记 |
‘h’ | 六角形标记 1 |
‘H’ | 六角形标记2 |
‘+’ | 加号标记 |
‘x’ | x号标记 |
‘D’ | 菱形(diamond)标记 |
‘d’ | 薄菱形标记 |
‘|’ | 竖线标记 |
‘_’ | 横线标记 |
线型字符
字符 | 描述 |
---|
‘-’ | 实线 |
‘–’ | 虚线 |
‘-.’ | 点画线 |
‘:’ | 点线 |
颜色字符
字符 | 描述 |
---|
‘b’ | 蓝色 |
‘g’ | 绿色 |
‘r’ | 红色 |
‘c’ | 青色 |
‘m’ | 品红 |
‘y’ | 黄色 |
‘k’ | 黑色 |
‘w’ | 白色 |
1.5 pie()属性
属性 | 描述 | 属性值 |
---|
x | 比例 | array,如果sum(x)>1,会将多出的部分进行均分 |
labels | 分块名称 | array |
explode | 每一块饼图,离开中心距离 | 默认值为(0,0) |
colors | 颜色 | 可选参数,默认为:None;如果为None,将使用当前活动环的颜色 |
shadow | 是否阴影 | 默认值为False |
autopct | 饼图内百分比设置 | 可以使用format字符串或者format function |
startangle | 起始绘制角度 | 默认图是从x轴正方向逆时针画起,如设定startangle=90则从y轴正方向画起 |
counterclock | 指定指针方向 | 布尔值,可选参数,默认为:True,即逆时针。将值改为False即可改为顺时针 |
labeldistance | label绘制位置,相对于半径的比例 | 如<1则绘制在饼图内侧,默认值为1.1 |
pctdistance | 类似于labeldistance | 指定autopct的位置刻度,默认值为0.6 |
radius | 控制饼图半径 | float,可选参数,默认为:None。如果半径是None,将被设置成1 |
textprops | 设置标签(labels)和比例文字的格式 | 字典类型,可选参数,默认值为:None |
plt.axis(‘equal’) | 将饼图显示为正圆形 | |
2. Pyecharts
2.1 Pyecharts库
2.1.1 导入
函数 | 说明 |
---|
from pyecharts import charts as ch | 导入表格总包 |
from pyecharts import options as opts | 配置包 |
|from pyecharts.globals import ThemeType| 主题包
2.1.2 常用图表
图表 | 函数 | 说明 |
---|
直方图 | from pyecharts import Bar | 导包 |
| Bar() | 直方图 |
折线图 | from pyecharts.charts import Line | 导包 |
| Line() | 折线图 |
散点图 | from pyecharts.charts import Scatter | 导包 |
| Scatter() | 散点图 |
饼状图 | from pyecharts.charts import Pie | 导包 |
| Pie() | 饼状图 |
2.1.3 其他图表
图表 | 函数 | 说明 |
---|
漏斗图 | from pyecharts.charts import Funnel | 导包 |
| Funnel() | 漏斗图 |
2.1.4 图像设置及渲染
| 函数 | 说明 |
---|
设置 | .add_xaxis() | 添加x轴数据 |
| .add_yaxis() | 添加y轴数据 |
| .set_global_opts() | 全局配置 |
| .use_theme() | 配置主题 |
渲染 | .render(path) | 默认将在项目根目录输出一个html格式的图表文件,path可指定路径及名称 |
| .render_notebook() | 在jupyter notebook中直接渲染出图表 |
2.1.5 Pyecharts.Options
图像初始设置——init_opts
函数 | 说明 |
---|
init_opts=opts.InitOpts() | 作为图像初始设置插入各图表实例中 |
opts.InitOpts(width, height) | 设置图像大小 |
opts.InitOpts(theme) | 设置图像主题 |
全局设置——.set_global_opts()
| 函数 | 说明 |
---|
| .set_global_opts() | 全局配置 |
标题配置 | title_opts=opts.TitleOpts() | 标题配置 |
| title=“XXX柱状图” | 主标题 |
系列设置
| 函数 | 说明 |
---|
设置标签 | label_opts=opts.LabelOpts() | 设置标签 |
| is_show=True | 标签显示/不显示 |
2.1.6 Faker
faker生成实例列表,默认7个值
函数 | 说明 |
---|
from pyecharts.faker import Faker | 导包 |
Faker.choose() | 随机生成任意实例列表 |
Faker.values() | 随机生成任意数字列表 |
Faker.cars | 随机生成汽车品牌 |
Faker.visual_color | 随机颜色列表 |
Faker.days_attrs | 'number天’字符串列表 |
Faker.clock | 时间字符串列表 |
Faker.dogs | 随机各种狗的列表 |
Faker.guangdong_city | 广东省下面7个市的固定列表 |
Faker.img_path(r’C:\abc.jpg’) | 返回图片路径 |
Faker.week_en | 英文的星期一到日 |
2.2 Pyecharts常见问题
2.2.1 柱状图等空白不显示
原因:pandas的数据类型继承自numpy,Pyecharts没法针对pandas的数据类型做特殊处理
解决:使用.tolist()
方法将pandas数据转化为列表
(
Bar(init_opts=opts.InitOpts(width="1000px", height="600px"))
.add_xaxis(index)
.add_yaxis('PV',pv.to_list())
.set_global_opts(
title_opts=opts.TitleOpts(title="每周用户行为可视化"),
tooltip_opts=opts.TooltipOpts(trigger="axis"),
toolbox_opts=opts.ToolboxOpts(is_show=False),
xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),
yaxis_opts=opts.AxisOpts(
type_="value",
splitline_opts=opts.SplitLineOpts(is_show=True)
),
)
.render_notebook()
)
3. Seaborn
3.1 设置
函数 | 设置 | 备注 |
---|
import seaborn as sns | 导入seaborn模块 | |
sns.set(style=‘darkgrid’,font_scale=1.3) | 设置风格、字体大小 | 有五种预设seaborn主题:darkgrid,whitegrid,dark,white,和ticks |
3.2 基础图形
函数 | 图形 | 备注 |
---|
sns.countplot(x,y,hue) | 条形图 | 显示每个分箱器中的观察计数。x: x轴上的条形图,y: y轴上的条形图,hue:标签按颜色聚合 |
sns.distplot() | 直方图 | 集合了matplotlib的hist()与sns.kdeplot()功能 |
sns.relplot(hue,data) | 散点图 | hue根据字段将散点不同颜色区分 |
sns.catplot(x,y,kind=‘box’,data) | 箱线图 | |
| | |
| | |
| | |
3.3 进阶图形
函数 | 图形 | 备注 |
---|
sns.kdeplot() | 核密度估计图 | 用于对单变量和双变量进行核密度估计并可视化 |
sns.catplot(x,y,kind=‘violin’,data) | 小提琴图 | |
sns.heatmap(data,xticklabels,yticklabels,linewidths,cmap,annot) | 热力图 | annot设置系数显示,linewidths设置区块间隔线 |
| | |