首页 > 解决方案 > 在绘图的不同元素中使用函数“返回”的 2 个不同输出

问题描述

我正在绘制每次电压的图。对于电压值,我希望通过“缩放”函数评估这些值,如果最大元素高于 1000 伏(11000 伏11千伏),则该函数将值从伏特转换为千伏。

该函数应该返回 2 个单独的输出;一个用于(新)电压,一个用于单位。这些被输入到绘图的y 轴值中,并且单位被赋予该轴的标签线。例如:

import numpy as np
time = np.array([0, 1, 2, 3])
system_voltage1 = np.array([110, 120, 130, 150])
system_voltage2 = np.array([11000, 12000, 13000, 15000])
scaling_function(input)
    if np.amax(input) < 1000:
        output = input/1
        Voltage_label = 'Voltage in Volts'
    if np.amax(input) > 1000:
        output = input/1000
        Voltage_label = 'Voltage in KILOVolts'
    return(output, Voltage_label)
fig14 = plt.figure(figsize=(16,9))
ax1 = fig14.add_subplot(111)

l1, = ax1.plot(time, scaling_function(system_voltage), color='r')
ax1.set_xlabel("time in second", color='k')
ax1.set_ylabel(Voltage_label, color='k')

现在,我遇到了麻烦,无法正确调用此函数。我需要只接收outputforscaling_function(system_voltage)和接收Voltage_labelin的功能ax1.set_ylabel(Voltage_label, color='k')。现在:

A) 我的问题:我不知道如何编写代码,所以只有第一个输出被接收并用于scaling_function(system_voltage),第二个元素用于标签行。

B) 我尝试过但没有奏效的东西:Voltage_label无法从 scaling_function 中识别 voltage_label 的值,因为它位于函数之外的外部循环中。我的意思是,我无法访问电压标签,因为它的值不是全局分配的。

谁能帮我这个?

标签: functionmatplotlibreturn-value

解决方案


y,l = scaling_function(system_voltage)
l1, = ax1.plot(time, y, color='r')
ax1.set_xlabel("time in second", color='k')
ax1.set_ylabel(l, color='k')

推荐阅读