首页 > 其他分享 >Matplotlib中绘制双y轴合并图例

Matplotlib中绘制双y轴合并图例

时间:2023-02-22 16:23:45浏览次数:52  
标签:ax2 10 set random Matplotlib 图例 np ax 绘制

转载自:https://www.cnblogs.com/atanisi/p/8530693.html

1. 绘制双y轴:twinx(), 双x轴:twiny()

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc
rc('mathtext', default='regular')

time = np.arange(10)
temp = np.random.random(10)*30
Swdown = np.random.random(10)*100-10
Rn = np.random.random(10)*100-10

fig = plt.figure(figsize=(10,7))
ax = fig.add_subplot(111)
ax.plot(time, Swdown, '-', label = 'Swdown')
ax.plot(time, Rn, '-', label = 'Rn')

ax2 = ax.twinx()
ax2.plot(time, temp, '-r', label = 'temp')

ax.legend(loc=0)
ax.grid()
ax.set_xlabel("Time (h)")
ax.set_ylabel(r"Radiation ($MJ\,m^{-2}\,d^{-1}$)")
ax2.set_ylabel(r"Temperature ($^\circ$C)")
ax2.set_ylim(0, 35)
ax.set_ylim(-20,100)
ax2.legend(loc=0)
plt.savefig('0.png')

图例会有两个

2. 合并图例

1). 仅使用一个轴的legend()函数

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc
rc('mathtext', default='regular')

time = np.arange(10)
temp = np.random.random(10)*30
Swdown = np.random.random(10)*100-10
Rn = np.random.random(10)*100-10

fig = plt.figure()
ax = fig.add_subplot(111)

lns1 = ax.plot(time, Swdown, '-', label = 'Swdown')
lns2 = ax.plot(time, Rn, '-', label = 'Rn')
ax2 = ax.twinx()
lns3 = ax2.plot(time, temp, '-r', label = 'temp')

# added these three lines
lns = lns1 + lns2 + lns3
labs = [l.get_label() for l in lns]
ax.legend(lns, labs, loc=0)

ax.grid()
ax.set_xlabel("Time (h)")
ax.set_ylabel(r"Radiation ($MJ\,m^{-2}\,d^{-1}$)")
ax2.set_ylabel(r"Temperature ($^\circ$C)")
ax2.set_ylim(0, 35)
ax.set_ylim(-20,100)
plt.savefig('1.png')

2). 使用figure.legend()

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc
rc('mathtext', default='regular')

time = np.arange(10)
temp = np.random.random(10)*30
Swdown = np.random.random(10)*100-10
Rn = np.random.random(10)*100-10

fig = plt.figure()
ax = fig.add_subplot(111)

lns1 = ax.plot(time, Swdown, '-', label = 'Swdown')
lns2 = ax.plot(time, Rn, '-', label = 'Rn')
ax2 = ax.twinx()
lns3 = ax2.plot(time, temp, '-r', label = 'temp')

fig.legend(loc=1)

ax.grid()
ax.set_xlabel("Time (h)")
ax.set_ylabel(r"Radiation ($MJ\,m^{-2}\,d^{-1}$)")
ax2.set_ylabel(r"Temperature ($^\circ$C)")
ax2.set_ylim(0, 35)
ax.set_ylim(-20,100)
plt.savefig('2.png')

图例绘制在figure对象上而不是,Axes上,默认的位置会出现在坐标系外

通过参数调整图例的位置

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc
rc('mathtext', default='regular')

time = np.arange(10)
temp = np.random.random(10)*30
Swdown = np.random.random(10)*100-10
Rn = np.random.random(10)*100-10

fig = plt.figure()
ax = fig.add_subplot(111)

lns1 = ax.plot(time, Swdown, '-', label = 'Swdown')
lns2 = ax.plot(time, Rn, '-', label = 'Rn')
ax2 = ax.twinx()
lns3 = ax2.plot(time, temp, '-r', label = 'temp')

# add legend
fig.legend(loc=1, bbox_to_anchor=(1,1), bbox_transform=ax.transAxes)

ax.grid()
ax.set_xlabel("Time (h)")
ax.set_ylabel(r"Radiation ($MJ\,m^{-2}\,d^{-1}$)")
ax2.set_ylabel(r"Temperature ($^\circ$C)")
ax2.set_ylim(0, 35)
ax.set_ylim(-20,100)
plt.savefig('0.png')

原文链接

标签:ax2,10,set,random,Matplotlib,图例,np,ax,绘制
From: https://www.cnblogs.com/impromptu/p/17144769.html

相关文章

  • ​​python--matplotlib(4)​
    前言 Matplotlib画图工具的官网地址是http://matplotlib.org/Python环境下实现Matlab制图功能的第三方库,需要numpy库的支持,支持用户方便设计出二维、三维数据的图形显示,制......
  • matplotlib 饼图
    importmatplotlib.pyplotaspltimportnumpyasnpif__name__=="__main__":#0、修改支持中文的字体plt.rcParams["font.sans-serif"]=["SimHei"]#......
  • matplotlib 直方图绘制
    importmatplotlib.pyplotaspltimportnumpyasnpif__name__=="__main__":#0、修改支持中文的字体plt.rcParams["font.sans-serif"]=["SimHei"]#......
  • 自动轨迹绘制
    使用到的库:turtle数据:自动轨迹绘制.txt300,0,144,1,0,0300,0,144,0,1,0300,0,144,0,0,1300,0,144,1,1,0300,0,108,0,1,1184,0,72,1,0,1184,0,72,0,0,0184,0,72,0,0,0184......
  • matplotlib 柱状图
    importmatplotlibimportmatplotlib.pyplotaspltimportnumpyasnpif__name__=="__main__":#0、修改支持中文的字体plt.rcParams["font.sans-serif......
  • matplotlib 散点图
    应用场景:探究不同变量之间的内在关系importmatplotlibimportmatplotlib.pyplotaspltimportnumpyasnpif__name__=="__main__":#0、修改支持中文的字......
  • python使用seaborn画热力图中设置colorbar图例刻度字体大小(2)
    1.问题描述使用matplotlib.pyplot画带色标(colorbar)的图时候,可以设置x,y轴坐标字体的大小,但没有办法设置图例刻度条字体的大小。期望效果如下如所示。  2.解决方......
  • 易基因|RRBS单碱基绘制580种动物的基因组规模DNA甲基化谱:Nature子刊
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。2023年01月16日,奥地利科学院分子医学研究中心(CeMM)研究团队在《NatCommun》杂志发表了题为“Comparative......
  • 基于Python绘制雷达图(非常好的学习例子)
    前言在学Python数据分析时,看到一篇论文,有一个非常好的雷达图例子。这篇论文我目前正在找,找到会更新在此。代码展示importanglesasanglesimportmatplotlibimport......
  • 使用VS code将本地的项目推送到gitee的方法(图例)
    第一步:在gitee新建一个仓库写上基本信息,点击创建(不要勾选初始化),记住项目名称成功后的页面中,把这个项目地址复制好 第二步VScode推送至gitee   把......