You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一左侧Y轴为两个种群分别添加独立标签?

在同一左侧Y轴添加两个独立标签的实现方法

这个需求确实有点小众,不过用常用的绘图工具就能搞定!核心思路就是绕过默认的单一Y轴标签,手动在左侧Y轴的上下两个位置各加一个自定义标签,对应你的两个种群。下面我用主流的绘图库给你具体实现:

方法一:用Matplotlib实现

Matplotlib的注释功能可以轻松实现这个效果,步骤如下:

1. 基础绘图代码

先画出两个种群的曲线:

import matplotlib.pyplot as plt
import numpy as np

# 生成模拟数据
x = np.arange(0, 10, 0.1)
upper_pop = 100 + 20 * np.sin(x)  # 上方种群数据
lower_pop = 30 + 10 * np.cos(x)   # 下方种群数据

# 创建绘图对象
fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(x, upper_pop, color='#2ecc71', label='上方种群')
ax.plot(x, lower_pop, color='#3498db', label='下方种群')

2. 添加双Y轴标签

利用text()函数在Y轴的上下位置分别放置标签:

# 获取Y轴的专属坐标系(保证标签跟着Y轴移动,不会错位)
y_axis_transform = ax.get_yaxis_transform()

# 给上方种群加标签(Y轴顶部位置)
ax.text(-0.1, 1.02, '上方种群数量', 
        transform=y_axis_transform,
        va='bottom', ha='center', rotation=90,
        fontsize=12, color='#2ecc71')

# 给下方种群加标签(Y轴底部位置)
ax.text(-0.1, -0.02, '下方种群数量', 
        transform=y_axis_transform,
        va='top', ha='center', rotation=90,
        fontsize=12, color='#3498db')

# 隐藏默认的单一Y轴标签,避免冲突
ax.set_ylabel('')

# 调整布局,添加图例
ax.legend()
plt.tight_layout()
plt.show()

关键细节解释

  • get_yaxis_transform():获取Y轴的坐标系,这样标签会和Y轴绑定,缩放图表时不会错位
  • 位置参数:-0.1是X方向的偏移(向左避开Y轴刻度),1.02和-0.02是Y方向的位置(分别对应轴的顶部和底部外侧)
  • 颜色可以和对应种群的曲线颜色统一,更直观

方法二:用Plotly实现(交互式图表)

如果需要交互式图表,Plotly的注释功能同样可以实现:

import plotly.graph_objects as go
import numpy as np

x = np.arange(0, 10, 0.1)
upper_pop = 100 + 20 * np.sin(x)
lower_pop = 30 + 10 * np.cos(x)

fig = go.Figure()
# 添加两个种群的曲线
fig.add_trace(go.Scatter(x=x, y=upper_pop, name='上方种群', line_color='#2ecc71'))
fig.add_trace(go.Scatter(x=x, y=lower_pop, name='下方种群', line_color='#3498db'))

# 添加上方标签
fig.add_annotation(
    xref='paper', yref='paper',
    x=-0.05, y=1.03,
    text='上方种群数量',
    showarrow=False,
    textangle=90,
    font=dict(size=12, color='#2ecc71')
)

# 添加下方标签
fig.add_annotation(
    xref='paper', yref='paper',
    x=-0.05, y=-0.03,
    text='下方种群数量',
    showarrow=False,
    textangle=90,
    font=dict(size=12, color='#3498db')
)

# 隐藏默认Y轴标题
fig.update_layout(yaxis_title='', margin=dict(l=70))
fig.show()

核心逻辑和Matplotlib一致:用注释功能在Y轴的上下位置放置自定义标签,替代默认的单一标题。

内容的提问来源于stack exchange,提问作者Gabriel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:20:46