如何使多个子图具有相同的y轴?

时间:2020-11-01 04:57:25

标签: python dataframe matplotlib

fig,axes = plt.subplots(nrows =6, ncols = 2, figsize = (20,30))

这是我的子图集。我正在绘制一些数据。一小段是:

    '2018':[0.31,10.49,39.2,12.58,138.21,94.55,60.97,103.4,95.59,74.85,22.48,6.45],
    '2019':[21.6,8.2,5,16.6,177.7,174.1,338.6,216.7,353.3,546.9,138.9,33]

我希望数据具有可比性,但是y轴的范围不相同。我该怎么做?

1 个答案:

答案 0 :(得分:0)

我希望数据具有可比性

import matplotlib.pyplot as plt

dt = {
    '2018':[0.31,10.49,39.2,12.58,138.21,94.55,60.97,103.4,95.59,74.85,22.48,6.45],
    '2019':[21.6,8.2,5,16.6,177.7,174.1,338.6,216.7,353.3,546.9,138.9,33]
}

x = [i for i, d in enumerate(list(dt.values())[0])]

plt.plot(x, *list(dt.values()))
plt.show()

exp



更新

import matplotlib.pyplot as plt
import random
import math

dt = {
    '2001':[0.31,10.49,39.2,12.58,138.21,94.55,60.97,103.4,95.59,74.85,22.48,6.45],
    '2002':[21.6,8.2,5,16.6,177.7,174.1,338.6,216.7,353.3,546.9,138.9,33],
    '2003':[0.31,10.49,39.2,12.58,138.21,94.55,60.97,103.4,95.59,74.85,22.48,6.45],
    '2004':[21.6,8.2,5,16.6,177.7,174.1,338.6,216.7,353.3,546.9,138.9,33],
    '2005':[0.31,10.49,39.2,12.58,138.21,94.55,60.97,103.4,95.59,74.85,22.48,6.45],
    '2006':[21.6,8.2,5,16.6,177.7,174.1,338.6,216.7,353.3,546.9,138.9,33],
}

def random_color():
    return "#%06x" % random.randint(0, 0xFFFFFF)

x = [i for i, d in enumerate(list(dt.values())[0])]

dts = []
for i in list(dt.values()):
    dts += i

min_dt = min(dts)
max_dt = max(dts)
sqr = math.ceil(math.sqrt(len(dt)))

counter = 0

for k, v in dt.items():
    plt.subplot(sqr, sqr, counter+1)
    plt.title(k)
    plt.ylim(min_dt, max_dt)
    plt.plot(x, list(dt.values())[counter], color=random_color())
    counter += 1

plt.tight_layout()
plt.show()

exp2

相关问题