首页 > 解决方案 > python matplotlib,第二个 y 轴与第一个

问题描述

我在 CSV 文件中有海拔压力和温度。

现在我想绘制温度(x 轴)与高度(y 轴)的关系。在第二个 Y 轴上,相应的压力应该以倒置的对数轴显示。 类似于这里

这是到目前为止的代码:

import matplotlib.pyplot as plt
from numpy import genfromtxt
import matplotlib.ticker
from matplotlib.ticker import FuncFormatter


data = genfromtxt("data.csv", delimiter=";")

# presure (hPa), altitude (m)
altitude, pressure, temperatur = data.T

fig, ax = plt.subplots()
ax2 = ax.twinx()
ax.get_shared_y_axes().join(ax,ax2)
    
ax.plot(temperatur, altitude, label='Temperature')
ax.set_xlabel('°C')
ax.set_ylabel('m')
ax.set_ylim(0, 15000)

ax2.yaxis.set_major_formatter(FuncFormatter(lambda x, pos: pressure[pos]))

plt.show()

这里有一些数据:

658.18837;940.56904;22.17028
663.54261;939.99102;22.13224
668.91575;939.41132;22.13249
674.37554;938.82261;22.13454
679.86459;938.23111;22.11198
685.49578;937.62465;22.09777
691.29321;937.00067;22.05775
697.26395;936.35845;22.09801
702.43408;935.80256;21.87262
706.51564;935.3637;21.77721
710.45886;934.93975;21.68197
715.56184;934.3913;21.67625
720.97886;933.80945;21.68942
727.17314;933.14455;21.68583
733.47037;932.46905;21.6334

标签: pythonmatplotlib

解决方案


您可以使用该alpha参数来调整线条的透明度。

import matplotlib.pyplot as plt
from numpy import genfromtxt


data = genfromtxt("1.csv", delimiter=";")


# presure (hPa), altitude (m)
altitude, pressure, temperature = data.T

fig, ax = plt.subplots()
    
ax.plot(temperature, altitude, label='Temperature', color='r')
ax.set_xlabel('Temperature(°C)')
ax.set_ylabel('Altitude(m)')


ax2 = ax.twinx()
ax2.set_ylabel('Pressure(mb)')
ax2.plot(temperature, pressure, color='b', alpha=0)

fig.legend(loc="upper right", bbox_to_anchor=(1,1), bbox_transform=ax.transAxes)

plt.show()

在此处输入图像描述


推荐阅读