Matplotlib可视化教程:Matplotlib的使用

Matplotlib绘图样式

线条属性

  • color颜色
  • linewith宽度
  • linestyle样式
  • alpha透明度
  • marker标记
  • mfc:make face color 标记的背景颜色
python 复制代码
import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = plt.subplot(111)
ax2 = ax1.twinx()

ax1.set_xlabel("Distance")
ax1.set_ylabel("Density")
ax2.set_ylabel("Temperature")

ax1.plot([0, 1, 2], [0, 1, 2], 

label="Density",color='red',marker='o',linestyle='solid',mfc='b',markersize=10,markeredgecolor='g',markeredgewidth=1,)

ax2.plot([0, 1, 2], [10, 13, 12], label="Temperature",c='b',marker='v',alpha=0.3,)

fig.legend()

Matplotlib设置坐标轴

​ 图表坐标轴是用来显示和表示数据的数值在图表中的位置的线性轴线。坐标轴有两个方向:水平轴(X轴)和垂直轴(Y轴)

单轴设置X与Y轴刻度

python 复制代码
from matplotlib import pyplot as plt

#设置中文字体
plt.rcParams['font.sans-serif'] = 'SimHei'
#显示正常显示符号
plt.rcParams['axes.unicode_minus'] = False

#1:准备数据
# 1天的温度
data = [-4,-2,-1,0,1,2,-3,5,3,1]
#时间
x = range(1,11)
#绘制图像
plt.plot(x,data)

# x轴刻度
x_ticks = [f'{i}点' for i in range(1,len(data))]
#设置X轴刻度
plt.xticks(x_ticks)
#设置Y轴刻度
y_ticks = range(min(data),max(data)+1)
plt.yticks(y_ticks)
plt.show()

双轴设置y轴刻度

python 复制代码
from matplotlib import pyplot as plt

#设置中文字体
plt.rcParams['font.sans-serif'] = 'SimHei'
#显示正常显示符号
plt.rcParams['axes.unicode_minus'] = False

#方法一
#   1;准备数据
#  1天24小时的温度
data1 = [-5,1,5,2,6,8,11,13,12,10,9,4,6,4,3,2]
#  1天24小时的湿度
data2 = [-2,4,5,2,7,8,11,13,12,10,9,4,6,4,3,2]
x = range(0,len(data1))
#   2:创建画布
fig,ax1 = plt.subplots()
#   3:绘制图像
ax1.plot(x,data1,label='温度')
plt.yticks(range(min(data1),max(data1)+1))
#设置共享X轴
ax2 = ax1.twinx()
#   5:绘制图像
ax2.plot(x,data2,label='湿度',color='r')
plt.yticks(range(min(data2),max(data2)+1))

#显示图例
fig.legend()

#方法二
#   1;准备数据
#  1天24小时的温度
data1 = [-5,1,5,2,6,8,11,13,12,10,9,4,6,4,3,2]
#  1天24小时的湿度

data2 = [-2,4,5,2,7,8,11,13,12,10,9,4,6,4,3,2]
x = range(0,len(data1))
#   2:创建画布
fig,ax1 = plt.subplots()
#   3:绘制图像
ax1.plot(x,data1,label='温度')
ax1.set_yticks(range(min(data1),max(data1)+1))
#设置共享X轴
ax2 = ax1.twinx()
#   5:绘制图像
ax2.plot(x,data2,label='湿度',color='r')
ax2.set_yticks(range(min(data2),max(data2)+1))

#显示图例
fig.legend()

Matplotlib网格与标题

pyplot.grid

python 复制代码
from matplotlib import pyplot as plt

#设置中文字体
plt.rcParams['font.sans-serif'] = 'SimHei'
#显示正常显示符号
plt.rcParams['axes.unicode_minus'] = False

# 1:设置表格
data = [-5,1,4,7,3,6,5,7,3,7,3,9,6]
x = range(1,len(data)+1)

plt.plot(x,data)
plt.grid(axis='x',ls='--',lw=1,c='gray',alpha=0.4)      

pyplot.title 与 pyplot.suptitle

python 复制代码
from matplotlib import pyplot as plt

#设置中文字体
plt.rcParams['font.sans-serif'] = 'SimHei'
#显示正常显示符号
plt.rcParams['axes.unicode_minus'] = False


#2:设置标题

data = [-5,1,4,7,3,6,5,7,3,7,3,9,6]
x = range(1,len(data)+1)

plt.plot(x,data)
plt.title('一日温度',fontsize = 16) #设置标题方法一
plt.suptitle("2030年1月1日温度",fontsize = 16)#设置标题方法二

Matplotlib绘制文本

pyplot.text方法

python 复制代码
from matplotlib import pyplot as plt

#设置中文字体
plt.rcParams['font.sans-serif'] = 'SimHei'
#显示正常显示符号
plt.rcParams['axes.unicode_minus'] = False

# 绘制文本
data = [-5,1,4,7,-3,6,5,7,4,7,3,9,6]
x = range(1,len(data)+1)

plt.plot(x,data,marker='o',linestyle='--')
for i,j in zip(x,data):
    # ha 横向的对齐方式
    # va 纵向的对齐方式
    plt.text(i+0.3,j,j,fontsize = 16,color='black',ha='center',va='center')

Matplotlib注释的使用

pyplot.annotate方法

python 复制代码
from matplotlib import pyplot as plt

#设置中文字体
plt.rcParams['font.sans-serif'] = 'SimHei'
#显示正常显示符号
plt.rcParams['axes.unicode_minus'] = False

# 注释的使用
data = [-5,1,4,7,-3,6,9,6,4,7,8,8,6]
x = range(1,len(data)+1)
#获取最大值
max_value = max(data)
max_index = data.index(max_value)+1

min_value = min(data)
min_index = data.index(min_value)+1

plt.plot(x,data,marker='o',ls = '--')
plt.annotate(
    '最大值',    #注释文本
    xy = (max_index,max_value),   #注释点
    xytext=(max_index+1,max_value-1),   #注释文本位置
    arrowprops={
        'width':2,              #箭头宽度
        'facecolor':'black',    #箭头颜色
        'headlength':5,         #箭头长度
        'headwidth':6,          #箭头宽度
        'shrink':0.2,           #箭头收缩比例
    }
    )

plt.annotate(
    '最小值',
    xy = (min_index,min_value),
    xytext=(min_index+1,min_value+1),
    arrowprops={
        'width':2,
        'facecolor':'black',
        'headlength':5,
        'headwidth':6,
        'shrink':0.2,
    }
    )

Matplotlib保存图表

pyplot.savefig

python 复制代码
from matplotlib import pyplot as plt

#设置中文字体
plt.rcParams['font.sans-serif'] = 'SimHei'
#显示正常显示符号
plt.rcParams['axes.unicode_minus'] = False

data = [-5,1,4,7,-3,6,9,6,4,7,8,8,6]
x = range(1,len(data)+1)

ata = [-5,1,4,7,3,6,5,7,3,7,3,9,6]
x = range(1,len(data)+1)

plt.plot(x,data)
plt.grid(axis='x',ls='--',lw=1,c='gray',alpha=0.4) 
plt.suptitle("2030年1月1日温度",fontsize = 16)

plt.savefig('./img/line1')
plt.savefig('./img/line2.png')
plt.savefig('./img/line3.jpg')
plt.savefig('./img/line4.svg')
plt.savefig('./img/line5.pdf')
plt.savefig('./img/line6.png',dpi=200)
plt.savefig('./img/line7.png',dpi=500)
plt.savefig('./img/line8.png',facecolor='gray')
plt.savefig('./img/line9.png',pad_inches=10)
相关推荐
饼干哥哥20 小时前
十年数据分析经验,被我打包成了4个跨境VOC Skill
前端·数据分析·数据可视化
十三画者3 天前
【文献分享】CANVAS:基于细胞构架与邻域信息的组织病理学虚拟空间肿瘤分析
人工智能·机器学习·数据挖掘·数据分析·数据可视化
凌云拓界3 天前
NodeVerdict | 性能门禁:把追踪数据变成 CI 规则
ci/cd·信息可视化·开源·node.js·bug·数据可视化·安全架构
杨超越luckly3 天前
Agent应用指南:巨幕之下 · 中国 IMAX 影院205城的空间布局
人工智能·arcgis·html·agent·数据可视化
做前端的娜娜子4 天前
从 0 到 1 打造一个配置可视化后台:一次前端配置中心化改造的实战复盘
前端·设计模式·数据可视化
山海鲸可视化4 天前
数字孪生技术:创新性破解城市高温难题
大数据·运维·数字孪生·数据可视化·可视化大屏
北墨NoLimit5 天前
TRAE Work实战:把办公Agent竞品调研从2-3天压到32分钟,有完整指令模板
前端·人工智能·数据可视化
NutShell Wang6 天前
每帧重建整条路径、每秒倾倒 48MB 给 GC:实时折线图渲染架构的实测复盘
前端·性能优化·架构·图形渲染·数据可视化·vibe coding
精益数智工坊6 天前
账龄分析怎么做才不流于形式?如何真正落地账龄分析?
大数据·人工智能·数据可视化
尘世中一位迷途小书童6 天前
无人机航线里的云台角度怎么调?Cesium 做了个视锥 + 鹰眼联动
前端·javascript·数据可视化