【matplotlib】浅谈python图形可视化练习经验分享

前言

本篇文章主要是分享matplotlib折线图、散点图、误差图、轮廓图、柱状图、饼图、面积图、直方图、雷达图、热力图、词云图、箱型图多子图绘制过程的方法和注意要点


示例图

【matplotlib】浅谈python图形可视化练习经验分享_第1张图片


 模块库

导入十二个子图所需的模块库

matplotlib用于绘制图形

import matplotlib.pylot as plt           #安装模块库  pip install matplotlib

numpy、random用于生成随机数据

import numpy as np                #安装模块库:pip install numpy
import random                     #系统自带

logging、jieba、wordcloud只用于用于子图11的词云图

import logging                              #系统自带
import jieba                                #安装模块库:pip install jieba
from wordcloud import WordCloud             #安装模块库:pip install wordcloud

注意:wordcloud若无法顺利安装,请自行查询百度、CSDN安装方式

参考链接:wordcloud安装过程及常见问题汇总


画布图形设置

fig,ax = plt.subplots(num='matplotlib 二维图形设计练习',
                      nrows=3,ncols=4,
                      figsize=(20,10),dpi=80,
                      edgecolor=None,
                      frameon=False
                      )
ax1,ax2,ax3,ax4,ax5,ax6,ax7,ax8,ax9,ax10,ax11,ax12 = ax.flatten()

plt.subplots()        创建子图表

num                      设置画布名称

nrows、ncols       设置横纵向子图数量

figsize、dpi          设置画布大小和分辨率

edgecolor             画布边框颜色

frameon                是否绘制画布图框

参考链接:python 可视化:fig, ax = plt.subplots()画多表图的3中常见样例 & 自定义图表格式

ax.flatten()        设置大小相同的子图

参考链接:plt.subplots中的ax = ax.flatten()


中文显示设置

simhei为window自带字体,默认字体文件存放处:C:\Windows\Fonts(如果不一样,可自行百度查找)

matplotlib一共有三种中文显示方式

方式一:把下面的代码放在导入模块后面,

import matplotlib.pyplot as plt
import numpy as np
import random
import logging                              #只有图11要用
import jieba                                #只有图11要用
from wordcloud import WordCloud             #只有图11要用


#中文显示设置
plt.rcParams['font.sans-serif'] = ['SimHei']      # 用于显示中文
plt.rcParams['axes.unicode_minus'] = False        # 用于解决保存图像是负号‘-’显示为方框的问题
plt.rcParams['font.size'] = '16'                  #用于设置中文大小

方式二:在每个需要用到中文的地方,手动设置中文字体

from matplotlib.font_manager import FontProperties  

fonts = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=20) 

plt.title('标题中文',fontproperties=fonts)
plt.annotate('注释中文',fontproperties=fonts)
plt.legend()...
plt.xticklabel...
plt.yticklabel...    等等

 方式三:

执行这串代码然后将simhei.ttf 字体文件放到这里面:\matplotlib\mpl-data\fonts\ttf

import matplotlib
print(matplotlib.get_data_path())  # 数据路径

然后退回到这个地方\matplotlib\mpl-data,打开“matplotlibrc”

Ctrl + R 可以快速定位!!!!

#font.family:

#font.sans-serif:

#axes.unicode_minus:

把这三个地方前面的“#”注释符号去掉,然后改成下面这样

font.family:sans-serif

font.sans-serif:SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

axes.unicode_minus:False,#作用就是解决负号'-'显示为方块的问题

 在代码前面加入这个

from matplotlib.font_manager import _rebuild

资料参考链接:

matplotlib中文乱码的两种解决方案

Matplotlib 显示中文

 方式二最为麻烦,方式三分享代码时,执行代码的主机也需这样设置,建议采用方式一


折线图

【matplotlib】浅谈python图形可视化练习经验分享_第2张图片


图形绘制特点

该图以绘制cos()和sin()两条线说明折线图的线型设置

增加图例、标题、轴名称等辅助说明图形

修改标题位置,X轴位置,隐藏部分边框用于美化图形

添加注释,用于突出图形某个特殊值


设置数据,用于两条线的X轴和Y轴

#设置数据
x1 = np.linspace(0,2 * np.pi,100)
y1 = np.linspace(0,10,20)

折线图的绘制语法:plt.plot()或ax.plot()

plt.plot(x,y,color,linestyle,linewidth,marker,**kw)

#绘制图形
ax1.plot(x1,np.sin(x1),color="b",linestyle='--',label='$sin(x)$')
ax1.plot(x1,np.cos(x1),'r-.',label='$cos(x)$')

color:颜色

linestyle:线型

linewidth:线宽

label:折线名称

marker:线条标记

注意:折线图中的颜色和线型、标记可以简化缩写


设置折线图的X轴、Y轴数值范围

面向过程版:

#设置X、Y轴范围

ax1.set_xlim(0,2*np.pi)
ax1.set_ylim(-1,1)

面向对象版:

#设置X、Y轴范围

plt.xlim(0,2*np.pi)
plt.ylim(-1,1)

np.pi:圆周率“π”的意思


设置图例

#设置图例

ax1.legend(loc=0,frameon=False)

location(loc):图例位置,0代表自动取最佳的位置

frameon:是否绘制图例边框


设置坐标轴刻度值

面向过程版:

#坐标轴刻度

ax1.set_xticks([0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi])

面向对象版:

#坐标轴刻度

plt.xticks([0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi])

设置坐标轴名称

面向过程版:

#坐标轴名称

ax1.set_ylabel("y_plot")

面向对象版:

#坐标轴名称

plt.ylabel("y_plot")

修改X轴刻度标签

#刻度标签

ax1_np_pi = [' ', r'$\frac{\pi}{2}$', r'$\pi$', r'$\frac{3\pi}{2}$', r'$2\pi$']
ax1.set_xticklabels(ax1_np_pi)

第一个值为“ ”,主要是为了隐藏X轴在Y轴交界处的刻度值


设置折线图边框

#边框设置

ax1.spines['bottom'].set_position(('axes',0.5))
ax1.spines['top'].set_color('none')
ax1.spines['right'].set_color('none')

set_position(('axes'),0.5):将X轴往上移动到Y轴的50%,既平分Y轴

set_color(none"):将需要隐藏的边框颜色设置为“None”,就可以实现隐藏效果


添加标记,突出特殊值

#添加标记

#添加标记点
tx = 3*np.pi/4
ty = np.sin(tx)
ax1.scatter(tx,ty,
            s=15,
            facecolor='b',
            zorder=3
            )

#添加标记线
ax1.plot([tx,tx],[0,ty],color='lightgray',linestyle=':')

#添加注释
ax1.annotate(r'$y = sin(\frac{3\pi}{4})$',
             xy=(tx,ty),xytext=(tx+1,ty),
             arrowprops=dict(facecolor='r',
                             edgecolor='r',
                             shrink=0.15,
                             headwidth=10,
                             headlength=8,
                             width=2))

标记点参数解释:

tx、ty:标记点的X轴和Y轴坐标点

ax1.scatter:matplotlib绘制散点的语法,下方有散点图绘制部分详细说明,这里不做解释

s:标记点大小

facecolor:标记点颜色

zorder:标记点边框大小

标记线参数解释:

底层逻辑就是通过绘制一条折线来作为标记线,只是这条折线只有(tx,0),(tx,ty)两个点而已,在通过设置线条颜色和线型来美化标记线

注释参数解释:

r'XXXXXXX':注释内容,可自由设置

xy:注释起始位置

xytext:注释文本位置

arrowprops:设置注释参数


折线图标题

下方有标题部分详细说明,这里不做详细解释

#图形标题

ax1.set_title('折线图(plot)',
              fontsize='large',
              fontweight='light',
              fontstyle='oblique',
              loc='right')

fontsize:文字大小

fontweight:文字位置

fontstyle:文字风格

loc:标题位置


完整代码

import matplotlib.pyplot as plt
import numpy as np

#中文设置
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用于显示中文
plt.rcParams['axes.unicode_minus'] = False  # 用于解决保存图像是负号‘-’显示为方框的问题


#设置画布
fig = plt.figure(figsize=(10,5),dpi=60)
ax1 = fig.add_subplot(111)

#折线图
#设置数据
x1 = np.linspace(0,2 * np.pi,100)
y1 = np.linspace(0,10,20)
#绘制图形
ax1.plot(x1,np.sin(x1),color="b",linestyle='--',label='$sin(x)$')
ax1.plot(x1,np.cos(x1),'r-.',label='$cos(x)$')
#设置X、Y轴范围
ax1.set_xlim(0,2*np.pi)
ax1.set_ylim(-1,1)
#设置图例
ax1.legend(loc=0,frameon=False)
#坐标轴刻度
ax1.set_xticks([0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi])
#坐标轴名称
ax1.set_ylabel("y_plot")
#刻度标签
ax1_np_pi = [' ', r'$\frac{\pi}{2}$', r'$\pi$', r'$\frac{3\pi}{2}$', r'$2\pi$']
ax1.set_xticklabels(ax1_np_pi)
#边框设置
ax1.spines['bottom'].set_position(('axes',0.5))
ax1.spines['top'].set_color('none')
ax1.spines['right'].set_color('none')
#添加标记
#添加标记点
tx = 3*np.pi/4
ty = np.sin(tx)
ax1.scatter(tx,ty,
            s=15,
            facecolor='b',
            zorder=3
            )
#添加标记线
ax1.plot([tx,tx],[0,ty],color='lightgray',linestyle=':')
#添加注释
ax1.annotate(r'$y = sin(\frac{3\pi}{4})$',
             xy=(tx,ty),xytext=(tx+1,ty),
             arrowprops=dict(facecolor='r',
                             edgecolor='r',
                             shrink=0.15,
                             headwidth=10,
                             headlength=8,
                             width=2))
#图形标题
ax1.set_title('折线图(plot)',
              fontsize='large',
              fontweight='light',
              fontstyle='oblique',
              loc='right')


plt.show()

参考资料:详见文末


散点图

【matplotlib】浅谈python图形可视化练习经验分享_第3张图片

【matplotlib】浅谈python图形可视化练习经验分享_第4张图片

 【matplotlib】浅谈python图形可视化练习经验分享_第5张图片


图形绘制特点

图一的气泡图也是散点图的一种,只是通过气泡大小以及不同的颜色来区分散点

图二使用不同的标记(marker)和颜色来区分不同样本的离散程度

图三是典型的散点图绘制

隐藏边框和坐标轴用于美化图形

更换标题颜色主要是突出标题可个性化设置

图形绘制底层原理一致,本篇章主讲气泡图的绘制


生成随机数据

#生成随机数据

x2 = np.random.normal(0,1,100)
y2 = np.random.normal(-2,1,100)

每次执行代码,自动生成不同的气泡图

注意:记得需要导入random模块

import random

设置数据的颜色

#设置不同数据的颜色

colors = abs(np.random.rand(100))

np.random.rand():生成符合正态分布的随机样本值


设置散点的大小

#设置散点的大小随数据而变化

size = 150 * abs(np.random.randn(100))

np.random.randn():生产符合正态分布的随机浮点数


散点图的绘制语法:plt.scatter或ax.scatter

plt.scatter(x,y,size,color,alpha,**kw)

#散点图1

ax2.scatter(x2,y2,s=size,c=colors,alpha=0.7)

s,c皆为size、color的简写

alpha:透明度


隐藏刻度值和刻度标签

面向过程版

#隐藏X轴刻度值和刻度标签

ax2.set_xticks([])

#隐藏Y轴刻度值和刻度标签

ax2.set_yticks([])

面向对象版

#隐藏X轴刻度值和刻度标签

plt.xticks([])

#隐藏Y轴刻度值和刻度标签

plt.yticks([])

隐藏边线

通过for循环隐藏上面、右边、下面、左边的边框

#隐藏边线

for i in ['top', 'right', 'bottom', 'left']:
    ax2.spines[i].set_visible(False)

也可以隐藏部分边框,就像这样!

ax2.spines['top'].set_color('none')
ax2.spines['right'].set_color('none')
ax2.spines['bottom'].set_color('none')
ax2.spines['left'].set_color('none')

设置散点图标题

#设置标题

ax2.set_title('散点图(scatter)',
              fontsize='x-large',
              fontweight='light',
              c='r')

fontsize:文本大小

fontweight:文本位置

color:标题颜色


完整代码

import matplotlib.pyplot as plt
import numpy as np
import random

#中文设置
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用于显示中文
plt.rcParams['axes.unicode_minus'] = False  # 用于解决保存图像是负号‘-’显示为方框的问题

#设置画布
fig = plt.figure(figsize=(8,5),dpi=60)
ax2 = fig.add_subplot(111)

#散点图
#生成随机数据
x2 = np.random.normal(0,1,100)
y2 = np.random.normal(-2,1,100)
#设置不同数据的颜色
colors = abs(np.random.rand(100))
#设置散点的大小随数据而变化
size = 150 * np.random.randn(100)
#散点图1
ax2.scatter(x2,y2,s=size,c=colors,alpha=0.7)
#隐藏X轴刻度值和刻度标签
ax2.set_xticks([])
#隐藏Y轴刻度值和刻度标签
ax2.set_yticks([])

#隐藏边线
for i in ['top', 'right', 'bottom', 'left']:
    ax2.spines[i].set_visible(False)

#设置标题
ax2.set_title('散点图(scatter)',
              fontsize='x-large',
              fontweight='light',
              c='r')


plt.show()

参考资料:详见文末


误差图

【matplotlib】浅谈python图形可视化练习经验分享_第6张图片


图形绘制特点

除了美观,也没啥特点了.....(其实也不美观哈哈哈)


误差图的绘制语法:plt.errorbar或ax.errorbar

plt.errorbar(x,y,xerr,yerrr,ecolor,elinewidth,capsize,fmt,ms,mfc,mec,**kw)

ax3.errorbar(range(20),np.random.random(20),
             yerr=0.2,
             fmt='ok',
             ms=7,
             ecolor='lightgray',
             elinewidth=3,
             capsize=5,
             capthick=3
             )

xerr,yerr:X轴、Y轴误差范围

ecolor:误差线颜色

elinewidth:误差线大小

capsize:误差横杠大小

capthick:误差横杠厚度

fmt:误差点形状

ms:误差点大小

mfc:误差点颜色

mes:误差线边框颜色


设置坐标轴

#设置X轴范围

ax3.set_xlim(-1,21)

#将X轴移动到顶部

ax3.xaxis.set_ticks_position('top')

设置轴刻度值

#设置X轴刻度值

ax3.set_xticks([i for i in range(0,21,4)])

#隐藏Y轴刻度值和刻度标签

ax3.set_yticks([])

隐藏边框

#去掉边框

for i in ['top', 'right', 'bottom', 'left']:
    ax3.spines[i].set_color('none')

设置标题

#设置标题

ax3.set_title('误差图(errorbar)')

设置网格

#设置网格

ax3.grid(axis='x',linestyle='-.')

这里只设置了X轴的网格和网格线条类型


完整代码

import matplotlib.pyplot as plt
import numpy as np
import random

#中文设置
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用于显示中文
plt.rcParams['axes.unicode_minus'] = False  # 用于解决保存图像是负号‘-’显示为方框的问题

#设置画布
fig = plt.figure(figsize=(8,5),dpi=120)
ax3 = fig.add_subplot(111)

#误差图
ax3.errorbar(range(20),np.random.random(20),
             yerr=0.2,
             fmt='ok',
             ms=7,
             ecolor='lightgray',
             elinewidth=3,
             capsize=5,
             capthick=3
             )
#设置X轴范围
ax3.set_xlim(-1,21)
#将X轴移动到顶部
ax3.xaxis.set_ticks_position('top')
#设置X轴刻度值
ax3.set_xticks([i for i in range(0,21,4)])
#隐藏Y轴刻度值和刻度标签
ax3.set_yticks([])
#去掉边框
for i in ['top', 'right', 'bottom', 'left']:
    ax3.spines[i].set_color('none')
#设置标题
ax3.set_title('误差图(errorbar)')
#设置网格
ax3.grid(axis='x',linestyle='-.')


plt.show()

参考资料,详见文末


轮廓图

【matplotlib】浅谈python图形可视化练习经验分享_第7张图片

【matplotlib】浅谈python图形可视化练习经验分享_第8张图片


设置X轴Y轴Z轴数据

#设置数据范围

x4 = np.linspace(-10,10,100)
y4 = np.linspace(-10,10,100)
X,Y = np.meshgrid(x4,y4)
Z = np.sin(X) ** 100 + np.cos(10 + Y) + np.sqrt(X**2 + Y**2)

np.linspace():生成等距样本值


绘制轮廓图语法:plt.contour或ax.contour

plt.contour(x,y,z,**kw)

#绘制图形

clabel_ax4 = ax4.contour(X,Y,Z,7)
cc = ax4.imshow(Z,extent=[-10,10,-10,10],origin='lower',alpha=0.5)
ax4.clabel(clabel_ax4,fontsize=8)

7:轮廓线数

extent:轮廓值范围

origin:坐标轴起始位置(默认左上角)

alpha:轮廓图透明度

fontsiZe:


设置刻度值范围

#设置刻度值范围

ax4.set_xticks([i for i in range(-10,11,5)])
ax4.set_yticks([i for i in range(-10,11,5)])

用for循环生成-10~10的等距刻度值


设置标题

#设置标题

ax4.set_title('轮廓图(contour)',
              bbox=dict(boxstyle='round,pad=0.5',fc='w',ec='k',lw=1,alpha=0.5))

设置轮廓图颜色条

#设置颜色条

fig.colorbar(colorbar_ax4,ax=ax4)

完整代码

import matplotlib.pyplot as plt
import numpy as np

#中文设置
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用于显示中文
plt.rcParams['axes.unicode_minus'] = False  # 用于解决保存图像是负号‘-’显示为方框的问题

#设置画布
fig = plt.figure(figsize=(8,5),dpi=120)
ax4 = fig.add_subplot(111)


#轮廓图1
#设置数据范围
x4 = np.linspace(-10,10,100)
y4 = np.linspace(-10,10,100)
X,Y = np.meshgrid(x4,y4)
Z = np.sin(X) ** 100 + np.cos(10 + Y) + np.sqrt(X**2 + Y**2)
#绘制图形
clabel_ax4 = ax4.contour(X,Y,Z,7)
cc = ax4.imshow(Z,extent=[-10,10,-10,10],origin='lower',alpha=0.5)
ax4.clabel(clabel_ax4,fontsize=8)
#设置刻度值范围
ax4.set_xticks([i for i in range(-10,11,5)])
ax4.set_yticks([i for i in range(-10,11,5)])
#设置标题
ax4.set_title('轮廓图(contour)',
              bbox=dict(boxstyle='round,pad=0.5',fc='w',ec='k',lw=1,alpha=0.5))
#设置颜色条
fig.colorbar(cc,ax=ax4)



plt.show()

参考资料:

Matplotlib轮廓图 -Matplotlib教程™

matplot画轮廓图_jiuweideqixu的博客-CSDN博客

Python密度和轮廓图绘制--Matplotlib详解_查数菇乐园-CSDN博客_python 轮廓图

matplotlib 合理设置colorbar和子图的对应关系_fzl的博客-CSDN博客

python matplotlib自定义colorbar颜色条-以及matplotlib中的内置色条_留下的,留不下的-CSDN博客


柱形图

【matplotlib】浅谈python图形可视化练习经验分享_第9张图片

【matplotlib】浅谈python图形可视化练习经验分享_第10张图片【matplotlib】浅谈python图形可视化练习经验分享_第11张图片


图形绘制特点

柱形图从方向区分为分垂直方向和水平方向;从图形区分堆积柱形图和簇状柱形图

本篇文章主要讲述一般常用的簇状柱形图的绘制过程

通过调整边框、刻度标签、图例来美化图形

设置生成随机数据

#设置数据

r = np.random.randint(0,50,8)
x5 = np.array([1,2,3,4])
y5 = np.array([r[0],r[1],r[2],r[3]])
z5 = np.array([r[4],r[5],r[6],r[7]])
ax5_list = ['A','B','C','D']
width = 0.4

r:生成等距样本值

X5:X轴坐标

y5、z5:Y轴坐标

ax5_list:刻度标签

width:柱子宽度


柱形图的绘制语法:plt.bar或ax.bar

plt.bar(x,y,height,width,align,color,edgecolor,**kw)

#簇状柱形图

ax5.bar(x5,y5,width=width,color='r',label='bar1',alpha=0.6)
ax5.bar(x5+width,z5,width=width,color='g',label='bar2',alpha=0.6)

x,y:X轴Y轴坐标

height:柱子高度

width:柱子宽度

color:柱子颜色

edgecolor:柱子边缘颜色


设置柱子显示数值

#设置数据标签

for a,b in zip(x5,y5):
    ax5.text(a,b,b,ha='center',va='bottom',fontsize=12)
for a,b in zip(x5+width,z5):
    ax5.text(a,b,b,ha='center',va='bottom',fontsize=12)

x5+width:簇状柱形图,去掉width就变成了堆积柱形图(同X轴不同Y轴)


设置轴范围

#设置轴范围

ax5.set_ylim(0,60)
ax5.set_xlim(0,5)

设置刻度范围

#设置刻度范围

t_list = []
for t in range(1,5):
    t_list.append(t+width/2)
ax5.set_xticks(t_list)

t+width/2:把刻度值设置在两个柱子中间

ax5.set_xticks:设置X轴范围


设置刻度标签

#设置刻度标签

ax5.set_xticklabels(ax5_list,rotation=40)

rotation=40:旋转40°


设置图形标题

#设置标题

ax5.set_title('簇状柱形图(bar)')

设置图例

#设置图例

ax5.legend()

隐藏部分边框

#隐藏部分边框

ax5.spines['top'].set_color('none')
ax5.spines['right'].set_color('none')

完整代码

import matplotlib.pyplot as plt
import numpy as np

#中文设置
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用于显示中文
plt.rcParams['axes.unicode_minus'] = False  # 用于解决保存图像是负号‘-’显示为方框的问题

#设置画布
fig = plt.figure(figsize=(8,5),dpi=120)
ax5 = fig.add_subplot(111)


#柱形图
#设置数据
x5 = np.array([1,2,3,4])
r = np.random.randint(0,50,8)
y5 = np.array([r[0],r[1],r[2],r[3]])
z5 = np.array([r[4],r[5],r[6],r[7]])
ax5_list = ['A','B','C','D']
width = 0.4
#簇状柱形图
ax5.bar(x5,y5,width=width,color='r',label='bar1',alpha=0.6)
ax5.bar(x5+width,z5,width=width,color='g',label='bar2',alpha=0.6)
#设置数据标签
for a,b in zip(x5,y5):
    ax5.text(a,b,b,ha='center',va='bottom',fontsize=12)
for a,b in zip(x5+width,z5):
    ax5.text(a,b,b,ha='center',va='bottom',fontsize=12)
#设置轴范围
ax5.set_ylim(0,60)
ax5.set_xlim(0,5)
#设置刻度范围
t_list = []
for t in range(1,5):
    t_list.append(t+width/2)
ax5.set_xticks(t_list)
#设置刻度标签
ax5.set_xticklabels(ax5_list,rotation=40)
#设置标题
ax5.set_title('簇状柱形图(bar)')



plt.show()

参考资料:详见文末


饼图

【matplotlib】浅谈python图形可视化练习经验分享_第12张图片


图形绘制特点

个性化标题

自由设置突出部分饼片

圆环图也是饼图的一种,本篇主讲圆环图的绘制逻辑


饼图的绘制语法:plt.pie或ax.pie

#绘制饼图1

ax6.pie(size,explode=(0,0,0.08,0),
        autopct='%1.1f%%',
        startangle=90,
        wedgeprops={'lw':5,'width':0.3,'edgecolor':'w'})

plt.pie(x,autopct,explode,pctdistance,shadow,startangle,colors,labeldistance,radius,wedgeprops)

x:占比

autopct:格式化百分比

explode:突出显示

pctdistance:离心值

shadow:阴影

startangle:起始角度

colors:饼片颜色

labeldistance:扇形标签与圆心的距离

radius:饼图的半径大小

wedgeprops:饼图的格式


设置数据

# 设置数据

s = []
for i in range(1,5):
    s.append(random.randint(1,100))
s1 = s[0]/sum(s)
s2 = s[1]/sum(s)
s3 = s[2]/sum(s)
s4 = s[3]/sum(s)
size = [s1,s2,s3,s4]

定义标签

# 定义标签

labels = ['pieA','pieB','pieC','pieD']

设置标签

#设置标题

ax6.set_title('饼图(pie)',
              bbox=dict(boxstyle='round,pad=0.5',fc='w',ec='k',lw=1,alpha=0.5))

设置图例

# 设置图例

ax6.legend(loc=0,ncol=1,labels=labels,frameon=False)

设置等比例轴

# 设置等比例轴

ax6.axis('equal')

完整代码

import matplotlib.pyplot as plt
import numpy as np
import random

#中文设置
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用于显示中文
plt.rcParams['axes.unicode_minus'] = False  # 用于解决保存图像是负号‘-’显示为方框的问题

#设置画布
fig = plt.figure(figsize=(8,5),dpi=120)
ax6 = fig.add_subplot(111)


# 饼图
# 设置数据
s = []
for i in range(1,5):
    s.append(random.randint(1,100))
s1 = s[0]/sum(s)
s2 = s[1]/sum(s)
s3 = s[2]/sum(s)
s4 = s[3]/sum(s)
size = [s1,s2,s3,s4]
# 定义标签
labels = ['pieA','pieB','pieC','pieD']
# 设置标题
ax6.set_title('饼图(pie)',
              bbox=dict(boxstyle='round,pad=0.5',fc='w',ec='k',lw=1,alpha=0.5))
# 设置图例
ax6.legend(loc=0,ncol=1,labels=labels,frameon=False)
# 设置等比例轴
ax6.axis('equal')

plt.show()

参考资料:

[python] 基于matplotlib实现圆环图的绘制_You and Me-CSDN博客_matplotlib环形图

Matplotlib饼图注释_超级大洋葱的博客-CSDN博客


面积图

【matplotlib】浅谈python图形可视化练习经验分享_第13张图片

设置数据

# 设置数据

labels = ['A','B','C','D','E']
a = []
b = []
c = []
d = []
for i in a,b,c,d:
    for j in random.choices(range(1,21),k=5):
        i.append(j)
        if len(d) == 5:
            break
data = [a,b,c,d]
x = range(len(labels))
data = np.array(data)

面积图的绘制语法:plt.stackplot或ax.stackplot

plt.stackplot(x,y,baseline,sym,labels,colors)

# 绘制图形

ax7.stackplot(x,data,baseline='zero',labels=labels,alpha=0.85)

baseline:基线

sym:对称

labels:标签

colors:颜色


设置X轴范围和命名

# 设置X轴

ax7.set_xlim(0,4)
ax7.set_xticks(x)

设置图例

# 设置图例

ax7.legend()

设置标题

# 设置标题

ax7.set_title('面积图')

完整代码

import matplotlib.pyplot as plt
import numpy as np
import random

#中文设置
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用于显示中文
plt.rcParams['axes.unicode_minus'] = False  # 用于解决保存图像是负号‘-’显示为方框的问题

#设置画布
fig = plt.figure(figsize=(8,5),dpi=120)
ax7 = fig.add_subplot(111)


# 面积图
# 设置数据
labels = ['A','B','C','D','E']
a = []
b = []
c = []
d = []
for i in a,b,c,d:
    for j in random.choices(range(1,21),k=5):
        i.append(j)
        if len(d) == 5:
            break
data = [a,b,c,d]
x = range(len(labels))
data = np.array(data)
# 绘制图形
ax7.stackplot(x,data,baseline='zero',labels=labels,alpha=0.85)
# 设置X轴
ax7.set_xlim(0,4)
ax7.set_xticks(x)
# 设置图例
ax7.legend()
# 设置标题
ax7.set_title('面积图')

plt.show()

参考资料:

matplotlib之pyplot模块——堆积面积图、主题河流图(stackplot)_mighty13的专栏-CSDN博客


直方图

【matplotlib】浅谈python图形可视化练习经验分享_第14张图片


图形绘制特点:

三个直方图分别使用随机样本值生成(指定了范围)

降低透明度,随机重叠部分区域,突出样本值分布范围

隐藏Y轴和部分边框,美化图形


直方图的绘制语法:plt.hist或ax.hist

plt.hist(x,bins,density,alpha,histtype,color,rwidth,orientaition)

# 绘制图形

ax8.hist(np.random.normal(0,1,100),
         bins=30,
         density=True,
         alpha=0.4,
         histtype='stepfilled',
         label='$hist1$'
         )
ax8.hist(np.random.normal(-2,1,100),
         bins=30,
         density=True,
         alpha=0.4,
         histtype='stepfilled',
         label='$hist2$'
         )
ax8.hist(np.random.normal(3,1,100),
         bins=30,
         density=True,
         alpha=0.4,
         histtype='stepfilled',
         label='$hist3$'
         )

np.random.nornal():在一个样本区间范围内指定生成个数

bines:柱子数量

density:概率总和为1

alpha:透明度

histtype:直方图风格

label:直方图名称


设置刻度范围

面对过程版

#设置刻度范围

ax8.set_xticks([-4,-2,0,2,4])
ax8.set_yticks([])

面对对象版

#设置刻度范围

plt.xticks([-4,-2,0,2,4])
plt.yticks([])

ax8.set_yicks([]):隐藏Y轴刻度


设置刻度标签

#设置刻度标签

ax8_list = ['A','B','C','D','E']
ax8.set_xticklabels(ax8_list)
ax8.legend(loc=1,frameon=False)
for i in ['top','left','right']:
    ax8.spines[i].set_visible(False)

location(loc):图例位置,0代表自动取最佳的位置

frameon:是否绘制图例边框

spines[].set_visible:隐藏部分边框


设置标题

#设置标题

ax8.set_title('直方图(hist)')

完成代码

import matplotlib.pyplot as plt
import numpy as np
import random

#中文设置
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用于显示中文
plt.rcParams['axes.unicode_minus'] = False  # 用于解决保存图像是负号‘-’显示为方框的问题

#设置画布
fig = plt.figure(figsize=(8,5),dpi=120)
ax8 = fig.add_subplot(111)


# 直方图
# 绘制图形
ax8.hist(np.random.normal(0,1,100),
         bins=30,
         density=True,
         alpha=0.4,
         histtype='stepfilled',
         label='$hist1$'
         )
ax8.hist(np.random.normal(-2,1,100),
         bins=30,
         density=True,
         alpha=0.4,
         histtype='stepfilled',
         label='$hist2$'
         )
ax8.hist(np.random.normal(3,1,100),
         bins=30,
         density=True,
         alpha=0.4,
         histtype='stepfilled',
         label='$hist3$'
         )
#设置刻度范围
ax8.set_xticks([-4,-2,0,2,4])
ax8.set_yticks([])
#设置刻度标签
ax8_list = ['A','B','C','D','E']
ax8.set_xticklabels(ax8_list)
ax8.legend(loc=1,frameon=False)
for i in ['top','left','right']:
    ax8.spines[i].set_visible(False)
#设置标题
ax8.set_title('直方图(hist)')


plt.show()

雷达图

【matplotlib】浅谈python图形可视化练习经验分享_第15张图片


图形绘制特点:

多个雷达图堆叠在一起,以此对比不同对象的各项属性

利用不同的透明度美化图形的填充颜色和边缘颜色 

图例的边框增加阴影突出立体感


隐藏图形边框

# 隐藏边框

ax9.set_axis_off()

plt.axis('off'):隐藏所有刻度线和标签


设置数据源

# 设置随机数据源

a = []
b = []
c = []
for i in a,b,c:
    for j in random.choices(range(1,6),k=5):
        i.append(j)
        if len(c) == 5:
            break

用for循环为abc三个列表各随机生成五个数

random.choices(range(1,6),k=5):随机在[1,6)中选取一个数,共选取5次


设置极轴刻度标签

# 极轴刻度

labels = ['var1','var2','var3','var4','var5']

轴径

# 轴径

N = len(a)

设置雷达图的角度值

# 设置雷达图的角度值

angles = np.linspace(0,2*np.pi,N,endpoint=False)

np.linspace(0,2*np.pi,N):在(0,2π)范围内随机生成N个数(浮点数)

endpoint:是否等距


闭环

# 封闭雷达图

a = np.concatenate((a,[a[0]]))
b = np.concatenate((b,[b[0]]))
c = np.concatenate((c,[c[0]]))
angles = np.concatenate((angles,[angles[0]]))
labels = np.concatenate((labels,[labels[0]]))  

将abc三个对象的数据闭环

将雷达图和刻度标签形成闭环


坐标转换格式

# 设置为极坐标格式

ax9 = fig.add_subplot(111,polar=True)

不转换格式,雷达图将以默认坐标格式显示


绘制abc三个对象的线条

# 绘制折线图

ax9.plot(angles,a,lw=1,linestyle='solid',label='A')
ax9.plot(angles,b,lw=1,linestyle='solid',label='B')
ax9.plot(angles,c,lw=1,linestyle='solid',label='C')

lw:线宽

linestyle:线条风格

label:线条名称


填充abc三个对象的颜色

# 填充颜色

ax9.fill(angles,a,color='b',alpha=0.1)
ax9.fill(angles,b,color='r',alpha=0.1)
ax9.fill(angles,c,color='g',alpha=0.1)

添加极轴标签

# 添加极轴标签

ax9.set_thetagrids(angles*180/np.pi,labels)

设置极轴范围

# 设置极轴范围

ax9.set_ylim(0,5)

设置极轴开始点

# 设置极轴开始点

ax9.set_theta_zero_location('N')

设置极轴方向

# 设置极轴方向

ax9.set_theta_direction(-1)     #顺时针:1   逆时针:-1

设置网格线

# 设置网格线

ax9.grid(True)

设置图例

# 设置图例

ax9.legend(loc='upper center', bbox_to_anchor=(0.5, -0.05),  shadow=True, ncol=3)

loc:图例位置

bbox_to_anchor:边框设置

shadow:阴影

ncol:图例列数


设置标题

# 设置标题

ax9.set_title('雷达图')

完整代码

import matplotlib.pyplot as plt
import numpy as np
import random

# 中文设置
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用于显示中文
plt.rcParams['axes.unicode_minus'] = False  # 用于解决保存图像是负号‘-’显示为方框的问题

# 设置画布
fig = plt.figure(figsize=(8,5),dpi=120)
ax9 = fig.add_subplot(111)


# 雷达图
# 隐藏边框
ax9.set_axis_off()
# 设置随机数据源
a = []
b = []
c = []
for i in a,b,c:
    for j in random.choices(range(1,6),k=5):
        i.append(j)
        if len(c) == 5:
            break
# 极轴刻度标签
labels = ['var1','var2','var3','var4','var5']
# labels.append(labels[0])                    #要么这里闭合,要么下面闭合
# 轴径
N = len(a)
# 设置雷达图的角度值
angles = np.linspace(0,2*np.pi,N,endpoint=False)
# 封闭雷达图
a = np.concatenate((a,[a[0]]))
b = np.concatenate((b,[b[0]]))
c = np.concatenate((c,[c[0]]))
angles = np.concatenate((angles,[angles[0]]))
labels = np.concatenate((labels,[labels[0]]))           #要么这里闭合,要么上面闭合
# 设置为极坐标格式
ax9 = fig.add_subplot(111,polar=True)
# 绘制折线图
ax9.plot(angles,a,lw=1,linestyle='solid',label='A')
ax9.plot(angles,b,lw=1,linestyle='solid',label='B')
ax9.plot(angles,c,lw=1,linestyle='solid',label='C')
# 填充颜色
ax9.fill(angles,a,color='b',alpha=0.1)
ax9.fill(angles,b,color='r',alpha=0.1)
ax9.fill(angles,c,color='g',alpha=0.1)
# 添加极轴标签
ax9.set_thetagrids(angles*180/np.pi,labels)
# 设置极轴范围
ax9.set_ylim(0,5)
# 设置极轴开始点
ax9.set_theta_zero_location('N')
# 设置极轴方向
ax9.set_theta_direction(-1)     #顺时针:1   逆时针:-1
# 设置网格线
ax9.grid(True)
# 设置图例
ax9.legend(loc='upper center', bbox_to_anchor=(0.5, -0.05),  shadow=True, ncol=3)
# 设置标题
ax9.set_title('雷达图')


plt.show()

参考资料:详见文末


热力图

【matplotlib】浅谈python图形可视化练习经验分享_第16张图片


设置数据源

# 设置数据源

x10 = np.random.rand(4,4)

绘制图形

# 绘制图形

colorbar_10 = ax10.imshow(x10, cmap=plt.cm.hot, vmin=0, vmax=1)
fig.colorbar(colorbar_10,ax=ax10,extend='both')

imshow:显示图像

cmap:色彩

vmin、vmax:颜色最值范围

extend:色彩颜色

ax:图像位置


设置标题

# 设置标题

ax10.set_title('热力图')

完整代码

import matplotlib.pyplot as plt
import numpy as np
import random

# 中文设置
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用于显示中文
plt.rcParams['axes.unicode_minus'] = False  # 用于解决保存图像是负号‘-’显示为方框的问题

# 设置画布
fig = plt.figure(figsize=(8,5),dpi=120)
ax10 = fig.add_subplot(111)


# 热力图
# 设置数据源
x10 = np.random.rand(4,4)
# 绘制图形
colorbar_10 = ax10.imshow(x10,cmap=plt.cm.hot,vmin=0,vmax=1)
fig.colorbar(colorbar_10,ax=ax10,extend='both')
# 设置标题
ax10.set_title('热力图')

plt.tight_layout()
plt.show()

参考资料:

一、python可视化——热力图_Nicole的博客-CSDN博客_python 热力图


词云图

【matplotlib】浅谈python图形可视化练习经验分享_第17张图片


图像绘制特点:

大部分教程都是使用导入本地文件的方法来运行,这可能不太适合刚接触的同学,所以我直接设置词组来展示词云图的效果


设置词组

# 设置词组(歌曲:我怀念的)

text = '我怀念的是无言感动,我怀念的是绝对炽热,我怀念的是你很激动求我原谅抱得我都痛'

分词

# 使用全模式分词

tp = jieba.cut(text,cut_all=True)

记得导入jieba库

import jieba                    # 安装库:pip install jieba

如果你的文本有很多空格或者标点符号,则需要先做数据清洗,具体例子参考百度


合并词组

# 合并词组

tp = ','.join(tp)

分词后,需要用一个符号来重新合并文本,否则会报错显示只有一个词组

jion():python内置合并函数


生成词云

# 生成云词

wc = WordCloud(font_path=r'.\simhei.ttf',background_color='white').generate(tp)

font_path:字体位置(请翻到最上面重新看字体部分)

background_color:背景颜色

注意语法的大小写

记得导入相关库

from wordcloud import WordCloud

这个库的安装比较容易失败,建议百度查询安装方式


隐藏边框和刻度

# 隐藏所有边框和刻度

ax11.axis('off')

显示图像

# 显示图像

ax11.imshow(wc)

设置标题

# 设置标题

ax11.set_title('词云图')

完整代码

import matplotlib.pyplot as plt
import numpy as np
import random
import logging
import jieba
from wordcloud import WordCloud

# 中文设置
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用于显示中文
plt.rcParams['axes.unicode_minus'] = False  # 用于解决保存图像是负号‘-’显示为方框的问题

# 设置画布
fig = plt.figure(figsize=(8,5),dpi=120)
ax11 = fig.add_subplot(111)


# 词云图
jieba.setLogLevel(logging.INFO)
# 设置词组(歌曲:我怀念的)
text = '我怀念的是无言感动,我怀念的是绝对炽热,我怀念的是你很激动求我原谅抱得我都痛'
# 使用全模式分词
tp = jieba.cut(text,cut_all=True)
# 合并词组
tp = ','.join(tp)
# 生成云词
wc = WordCloud(font_path=r'.\simhei.ttf',background_color='white').generate(tp)
# 隐藏所有边框和刻度
ax11.axis('off')
# 显示图像
ax11.imshow(wc)
# 设置标题
ax11.set_title('词云图')

plt.tight_layout()
plt.show()

参考资料:

python :jieba库的使用大全_总裁余(余登武)博客-CSDN博客_pythonjieba库的使用

【学习笔记】wordCloud的基本使用_寸先生的AI道路-CSDN博客

详细介绍使用wordCloud设计词云_修炼之路-CSDN博客

怎么用Python画出好看的词云图?_数据森麟-CSDN博客


箱型图

【matplotlib】浅谈python图形可视化练习经验分享_第18张图片


 图像绘制特点

利用三个不同的样式作为设置对比,可以自由设置箱型图的宽度、误差线、颜色、中位线等等


设置数据

# 设置数据

data =[np.random.normal(0,i,100) for i in range(1,4)]

随机生成三个样本

np.random.normal():随机生成正态分布


绘制图形

# 绘制图形

boxs = ax12.boxplot(data,patch_artist=True,
                vert=True,widths=[0.2,0.4,0.3])

箱型图的绘制语法:plt.boxplot或ax.boxplot

plt.boxplot(data,patch_artist,vert,widths,sym)

data:数据

pathc_artist:填充箱体颜色

vert:箱体显示方向;True垂直摆放,False水平摆放

widths:箱体宽度

sym:指定异常点的形状


设置颜色

# 设置颜色

colors = ['pink', 'lightblue', 'lightgreen']
for patch,color in zip(boxs['boxes'],colors):
    patch.set_facecolor(color)

zip:python内置函数

boxs['boxes']:箱体在箱型图中国的位置


设置刻度值

# 设置刻度值

ax12.set_yticks([-6,-3,0,3,6])

设置标题

# 设置标题

ax12.set_title('箱型图')

完整代码

import matplotlib.pyplot as plt
import numpy as np
import random


# 中文设置
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用于显示中文
plt.rcParams['axes.unicode_minus'] = False  # 用于解决保存图像是负号‘-’显示为方框的问题

# 设置画布
fig = plt.figure(figsize=(8,5),dpi=120)
ax12 = fig.add_subplot(111)


# 箱型图
# 设置数据
data =[np.random.normal(0,i,100) for i in range(1,4)]
# 绘制图形
boxs = ax12.boxplot(data,patch_artist=True,
                vert=True,widths=[0.2,0.4,0.3])
# 设置颜色
colors = ['pink', 'lightblue', 'lightgreen']
for patch,color in zip(boxs['boxes'],colors):
    patch.set_facecolor(color)
# 设置刻度值
ax12.set_yticks([-6,-3,0,3,6])
# 设置标题
ax12.set_title('箱型图')

plt.tight_layout()
plt.show()

参考资料:

Matplotlib - 箱线图、箱型图 boxplot () 所有用法详解_Not Found黄小包-CSDN博客_matplotlib箱线图

matplotlib可视化箱线图 - 知乎


图形设置常用参数

以下主要记录图形参数的一些常用设置


注释

plt.annotate(t,xy,xytext,arrowprops,color,weight,bbox)
t 注释内容
xytext 注释位置
xy 注释的坐标点
color 注释颜色
weight 字体线性
bbox 注释框
arrowprops 绘制箭头
arrowprops子参数
headwidth 箭头大小
width 箭头线大小
facecolor 箭头颜色
edgecolor 箭头边框颜色
shrink 箭头线收缩长度

文本

plt.text(x,y,family,fontsize,style,color)
x,y 注释内容位置
family 字体
fontsize 字体大小
style 字体风格
color 字体颜色

参考资料:

Python绘图总结(Matplotlib篇)之字体、文本及注释_wuzlun的专栏-CSDN博客_matplotlib 字体

Matplotlib注释箭头样式_超级大洋葱的博客-CSDN博客

matplotlib命令与格式:标题(title),标注(annotate),文字说明(text)_开码河粉-CSDN博客_plt设置title


图像

plt.imshow(x,cmap,extent,origin,alpha,interpolation,aspect)
x
cmap 图像色彩
extent 坐标轴范围
origin 图像原点位置
alpha 透明度
interpolation 显示方式
aspect 控制轴的纵横比

参考资料:

Matplotlib imshow()函数_叫我SKY的博客-CSDN博客

matplotlib基础绘图命令之imshow_庐州月光的博客-CSDN博客


颜色条

plt.colorbar(ax,norm,cmap,orientation,extend)
ax 颜色条的位置
norm 颜色条的大小值
cmap 色彩
orientation orientation
extend extend

参考资料:

python matplotlib自定义colorbar颜色条-以及matplotlib中的内置色条_留下的,留不下的-CSDN博客


图形窗口管理

图形窗口常用语法
plt.axes([左边,底部,宽度,高度]) 设置子图表大小
plt.subplot 创建单个子图表
plt.subplots 快速创建多个子图表
plt.GridSpec 自定义排列
subplots_adjust 自定义设置图像间距
plt.tight_layout 自动调整图像间距
plt.subplots常用参数
nrows 行数
ncols 列数
num 画布名称
facecolor 画布背景颜色
edgecolor 画布边框颜色
frameon 是否绘制画布图框
figsize 图像大小
sharex 相同X轴刻度
sharey 相同Y轴刻度
subplots_adjust
left 左边
bottom 底部
right 右边
top 顶部
wspace 左右宽度
hspace 上下宽度

参考资料:

plt绘图与Axes绘图_风浅安然的博客-CSDN博客


标题 

plt.title常用参数
fontsize 字体大小
fontweight 字体粗细
fontstyle 字体类型
location 字体位置
rotation 字体旋转
alpha 透明度
backgroundcolor 标题背景
color 标题颜色
bbox 标题外框

fontsize子参数
xx-small 最小
x-small 较小
small
medium 中等
large
x-large 较大
xx-large 最大
fontweight子参数
light 细的
normal 正常
medium 中等
semibold 较粗
fontstyle子参数
normal 正常
italic 斜体
oblique 倾斜
location子参数
verticalalignment 水平对齐;center、top、bottom、baselin
horizontalalignment 垂直对齐;left、right、center
bbox标题外框子参数
boxstyle 方框外形
facecolor 背景颜色
edgecolor 边框线条颜色
edgewidth 边框线条大小

参考资料:

matplotlib命令与格式:标题(title),标注(annotate),文字说明(text)_开码河粉-CSDN博客_plt设置title


坐标轴

坐标轴常用参数
plt.xlim;ax.set_xlim X轴坐标
plt.ylim;ax.set_ylim Y轴坐标
plt.axis 坐标轴特殊设置
plt.xlabel X轴名称
plt.ylabel Y轴名称
twinx 双坐标轴

plt.axis子参数
plt.axis("tight") 自动设置X、Y轴最值
plt.axis("equal") 自动设置X、Y轴相同范围
plt.axis("off") 隐藏所有刻度线和标签

刻度

刻度值
plt.xticks;ax.set_xticks X轴刻度值
plt.yticks;ax.set_yticks Y轴刻度值
plt.xticks([]);ax.set_xticks([]) 隐藏X轴刻度值和标签
plt.yticks([]);ax.set_yticks([]) 隐藏Y轴刻度值和标签
plt.tick_params(bottom=False,top=False,left=False,right=False) 隐藏刻度值
r'\frac{分子}{分母}' 显示分数的方法
刻度标签
xticklabels X轴刻度标签
yticklabels Y轴刻度标签

参考资料:

matplotlib隐藏刻度线、标签和边线_韭浪的博客-CSDN博客_matplotlib 隐藏刻度


边框

ax.spines常用设置
ax.spines[''].set_color('none') 隐藏部分边线
ax.spines[].visible 隐藏部分边线
for i in ['top', 'right', 'bottom', 'left']:
    ax.spines[i].set_visible(False)
隐藏全部边线
ax.xaxis.set_ticks_position('') 调整X轴位置
ax.yaxis.set_ticks_position('') 调整Y轴位置
边线位置
top 顶部
bottom 底部
left 左边
right 右边

参考资料:

matplotlib 的 spines模块详解_Python草堂的博客-CSDN博客_spines


网格

plt.grid常用参数
alpha 透明度
color 颜色
linewidth 网格线宽度
linestyle 网格线分割
which 线条层次;major、minor、both三个参数可选
axis 网格轴;x、y、both三个参数可选

图例

plt.legend常用参数
location(loc) 图例位置
angle 阴影的角度
density 阴影线的密度
byt 图例边框;o(显示)n(不显示)
frameon 图例边框;True、False
bg

图例背景色

cex 字符大小
ncol 图例列数
图例框常用设置
boxlty 图例框的类型
boxlwd 图例框线条粗细
图例标题常用设置
title 图例标题

title.col

图例标题颜色
title.adj 图例标题位置

图例中的文本可设置字体大小、文本字体、文本颜色、文本宽度,和标题、注释一样

参考资料:

python - matplotlib.legend()函数用法解析_鸡啄米的时光机的博客-CSDN博客


线条

线条常用设置参数
linestyle 线条风格
marker 线条标记
linewidth(lw) 线条粗细
linestyle常用参数
- 实线
-- 虚线
-. 长短点虚线
点线

参考资料:

python+matplotlib绘图线条类型和颜色选择_syyyy712的博客-CSDN博客_matplotlib 颜色


填充

fill设置
fill 填充区域
fill_beween 填充交叉区域

fill属性用得少,各位可以看下参考资料,讲的也比较详细(主要是懒!!!)

参考资料:

Matplotlib中的fill_between总结_kabuto_hui的博客-CSDN博客

Matplotlib:fill, fill_between ,fill_betweenx填充图形指定区域_错位的梦寐的博客-CSDN博客_matplotlib区域填充


matplotlib笔记脑图


注意事项:

  1. 部分参数可以使用简写
  2. 气泡图本质上也是散点图的一种
  3. 误差图的原理是在图形上增加误差线而已,本质上柱状图、直方图、箱型图等等也是可以通过增加误差线参数来实现添加误差线
  4. 环形图的原理就是在饼图中间再画一个背景色的饼图来隐藏中间
  5. 用折线图+填充(fill)也可以实现面积图的效果
  6. 柱形图和直方图的区别就在于看的是数据的具体数值还是分布趋势
  7. 雷达图本质上是把坐标换成极坐标的折线图+填充

matplotlib全图参考资料:

(认真看完,再针对不懂的点单独查询,多加练习也就学会这玩意了)

推荐收藏 | 最强(全) Matplotlib 可视化实操指南

Python--Matplotlib(基本用法)_苦作舟的人呐-CSDN博客_matplotlib

用Python画如此漂亮的专业插图 ?简直So easy!

这16个Matplotlib 绘图实用小技巧值得你收藏~~

这40个Python可视化图表案例,强烈建议收藏!

Matplotlib全面语法教程 & 更好的理解Matplotlib用法 - 知乎

[Python从零到壹] 十七.可视化分析之Matplotlib、Pandas、Echarts入门万字详解_杨秀璋的专栏-CSDN博客_python聚类分析


尾语

写这篇文章的主要目的是为了记录自己所学的知识,同时,也为了给刚接触matplotlib的朋友一点参考价值。

文中有很多参考资料,都是很多大佬们写的一些资料,讲的也比较详细

最后感谢各位的观看,觉得可以的话可以点赞收藏喔


示例图代码

详见网址:matplotlib二维练习图纸代码.py-Python文档类资源-CSDN下载

你可能感兴趣的:(数据可视化,python,matplotlib,视图设计,经验分享,数据可视化)