python - 在辅助轴上绘制两个变量时具有单个 y 轴值

标签 python matplotlib plotly axis-labels

我试图在使用主轴和次轴的图表中绘制三个变量,其中一个变量在主轴上,两个变量在次轴上。我的代码

vav = floor_data[floor_data['vavId'] == i]
        vav = vav.reset_index()
        x = vav.index 
        y1 = vav['nvo_temperature_sensor_pps']
        y2 = vav['nvo_airflow']
        y3 = vav['nvo_air_damper_position']   

        fig, ax1 = plt.subplots()
        ax2 = ax1.twinx()
        ax1.plot(x, y1, 'g-')
        ax2.plot(x, y2, 'b-')
        ax2.plot(x, y3, 'r-')
        ax2 = ax1.twinx()

        ax1.set_xlabel('VAV '+str(i))
        ax1.set_ylabel('temperature ', color='g')
        ax2.set_ylabel('air flow, temperature', color='b')

        plt.show()

我已经添加了所有三个变量,但我在辅助轴的 y 刻度上遇到问题。我的 plotly 看起来像 enter image description here

是否可以在辅助轴上设置单个 y 刻度值以提高可读性?

最佳答案

您需要在主机上创建新的 twix 轴并缩小子图,以便为右侧的附加轴创建空间。然后将新轴移动到正确的位置。代码中的一些描述。

import matplotlib.pyplot as plt
import numpy as np

fig, host = plt.subplots()
# shrink subplot
fig.subplots_adjust(right=0.75)

# create new axis on host
par1 = host.twinx()
par2 = host.twinx()
# place second axis at far right position
par2.spines["right"].set_position(("axes", 1.2))


# define plot functions
def function_sin(x):
    return np.sin(x)


def function_parabola(x):
    return x**2


def function_line(x):
    return x+1

# plot data
x = np.linspace(0, 10, 100)
y_sin = function_sin(x)
y_parabola = function_parabola(x)
y_line = function_line(x)
host.plot(x, y_sin, "b-")
par1.plot(x, y_parabola, "r-")
par2.plot(x, y_line, "g-")

# set labels for each axis
host.set_xlabel("VAV 16")
host.set_ylabel("Temperature")
par1.set_ylabel("Temperature")
par2.set_ylabel("Air Flow")

plt.show()

输出:

enter image description here

关于python - 在辅助轴上绘制两个变量时具有单个 y 轴值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60015071/

相关文章:

python - 如何在python中的等高线图上绘制梯度向量

python - 如何同时运行 2 个列表的循环,以便循环中的每个项目都匹配? [Python]

python - 使用带有奇怪符号的字符串注释图形

javascript - 不需要的括号不断从我的函数返回 (JavaScript/html)

python - 如何在可绘制的瀑布图中为条形设置不同的颜色?

javascript - Plotly.js 模式栏将图标分组并将其放置在图例上

python - 使用SMOTE和ADASYN平衡图像数据集

Python Pandas为选定列的逐行最大值添加列

python - 使 matplotlib 绘图窗口弹出为事件窗口

python - 如何仅按小时聚合 Pandas 日期时间轴系列