python - 如何使多个子图具有相同的 y 轴?
问题描述
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 轴的范围不一样。我该怎么做?
解决方案
我希望数据具有可比性
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()
更新
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()
推荐阅读
- android - Android Camera GPUImage + Video
- ios - 所有 iPhone 屏幕比例的 LaunchScreen 图像
- c# - 在 C# 中使用 XML 请求
- amazon-cognito - 从 AWS Cognito refresh_token 结果返回 aud
- c# - SQL 命令中的字符串插值
- concurrency - 当线程太少时,程序挂起
- reactjs - ReactJS 视图源在文件更改后没有得到更新
- function - 在 gitlab ci 脚本功能失败时掩码退出 1
- java - iText中的水平对齐段落
- tensorflow - TensorFlow 中的梯度概念与梯度的数学定义有何关系?