【python学习】-matplotlib绘制三Y轴图形及其格式优化

matplotlib绘制三Y轴图形及其格式优化

  • 官方例子
  • 美化图形及代码解读

本文记录绘制三Y轴图形的学习过程。基于官方例子,对图形进行格式美化,使其符合期刊要求。

官方例子

from mpl_toolkits.axes_grid1 import host_subplot
from mpl_toolkits import axisartist
import matplotlib.pyplot as plt
host = host_subplot(111, axes_class=axisartist.Axes)
plt.subplots_adjust(right=0.75)
#建立第二、第三根Y轴
par1 = host.twinx()
par2 = host.twinx()

#设置第三根Y轴位置,这里选择是右边
par2.axis["right"] = par2.new_fixed_axis(loc="right", offset=(60, 0))

par1.axis["right"].toggle(all=True)
par2.axis["right"].toggle(all=True)

p1, = host.plot([0, 1, 2], [0, 1, 2], label="Density")
p2, = par1.plot([0, 1, 2], [0, 3, 2], label="Temperature")
p3, = par2.plot([0, 1, 2], [50, 30, 15], label="Velocity")

host.set_xlim(0, 2)
host.set_ylim(0, 2)
par1.set_ylim(0, 4)
par2.set_ylim(1, 65)

host.set_xlabel("Distance")
host.set_ylabel("Density")
par1.set_ylabel("Temperature")
par2.set_ylabel("Velocity")

host.legend()

plt.show()

【python学习】-matplotlib绘制三Y轴图形及其格式优化_第1张图片

美化图形及代码解读

对官方例子中的图形进行美化,包括设置图形大小、像素、坐标轴刻度值字体及大小、标签字体及大小、图例格式及大小等设置

#导入库
from mpl_toolkits.axes_grid1 import host_subplot
from mpl_toolkits import axisartist
import matplotlib.pyplot as plt
#设置图形大小、像素
fig=plt.figure(figsize=(6,4.5))
plt.rcParams['figure.figsize']=(6,4.5)
plt.rcParams['savefig.dpi'] = 600 #图片像素
plt.rcParams['figure.dpi'] = 600
#设置图形中坐标轴标签大小、刻度值字体及大小
params = {'axes.labelsize': 18, 'axes.titlesize':18, 'legend.fontsize': 14, 'xtick.labelsize': 16, 'ytick.labelsize': 16,'font.family':'Arial'}
plt.rcParams.update(params)
#绘图
host = host_subplot(111, axes_class=axisartist.Axes)
plt.subplots_adjust(right=0.75)
#建立第二、第三根Y轴
par1 = host.twinx()
par2 = host.twinx()
#设置第三根Y轴位置,这里选择是右边
par2.axis["right"] = par2.new_fixed_axis(loc="right", offset=(60, 0))
#设置Y轴刻度值、坐标轴标签显示
par1.axis["right"].toggle(all=True)
par2.axis["right"].toggle(all=True)
#进行绘图
p1, = host.plot([0, 1, 2], [0, 1, 2], label="Density")
p2, = par1.plot([0, 1, 2], [0, 3, 2], label="Temperature")
p3, = par2.plot([0, 1, 2], [50, 30, 15], label="Velocity")
#设置x轴、y轴坐标显示范围
host.set_xlim(0, 2)
host.set_ylim(0, 2)
par1.set_ylim(0, 4)
par2.set_ylim(1, 65)
#设置x轴、y轴标签
host.set_xlabel("Distance")
host.set_ylabel("Density")
par1.set_ylabel("Temperature")
par2.set_ylabel("Velocity")
#显示图例
host.legend(frameon=False,fontsize='x-large',)
#设置y轴标签颜色
host.axis["left"].label.set_color(p1.get_color())
par1.axis["right"].label.set_color(p2.get_color())
par2.axis["right"].label.set_color(p3.get_color())
#将刻度线设置为向外
host.axis[:].major_ticks.set_tick_out(True)
par1.axis[:].major_ticks.set_tick_out(True)
par2.axis[:].major_ticks.set_tick_out(True)
#显示图形
plt.show()

【python学习】-matplotlib绘制三Y轴图形及其格式优化_第2张图片

你可能感兴趣的:(python,matplotlib,python,学习)