Две оси y с twinx
Стройте две величины с разными единицами на одном графике со второй осью y из ax.twinx.
Введение
Осадки в миллиметрах и температура в градусах не делят одну шкалу: на одной оси одна из них выглядит плоской. ax.twinx создаёт второй Axes с общей осью x, но со своей осью y справа.
ax1 рисует столбцы осадков с осью y слева. ax2 = ax1.twinx() использует те же месяцы, но получает новую ось y справа для температуры. Если подпись каждой оси окрашена как её данные, читатель видит, какая ось к какому ряду относится. Используйте две оси осторожно: сравнение рядов легко прочитать неверно.
Интерактивный визуализатор
Выключите вторую ось y, чтобы понять, зачем она: на общей шкале линия температуры сплющена внизу.
Запускаемый пример Matplotlib
Matplotlib
main.py
import matplotlib.pyplot as plt
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
temperature = [3, 5, 9, 14, 18, 22, 25, 24, 20, 14, 8, 4]
rain = [60, 50, 55, 45, 60, 70, 80, 85, 60, 75, 80, 70]
fig, ax1 = plt.subplots(figsize=(7, 4))
ax1.bar(months, rain, color="tab:blue", alpha=0.4)
ax1.set_ylabel("Rain (mm)", color="tab:blue")
ax2 = ax1.twinx()
ax2.plot(months, temperature, color="tab:red", marker="o")
ax2.set_ylabel("Temperature (°C)", color="tab:red")
ax1.set_title("Climate in one chart")
plt.show()
