我正在尝试使用子图为数据的每一行绘制债券收益率曲线(折线图)。我该如何使用循环来创建它?可以有5乘20的图(总共100个子图)吗?
这是我正在处理的数据框。我看过另一篇文章,并提出了以下代码。 https://imgur.com/HbsqI8i
df = pd.read_csv("treasury_yields.csv")
fig, ax = plt.subplots(nrows=20, ncols=5)
for row in ax:
for col in row:
col.plot(x, y)
plt.show()
我希望生成类似于上图的内容。我还很新,我不确定从哪里开始。
答案 0 :(得分:0)
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv("treasury_yields.csv")
fig, ax = plt.subplots(nrows=20, ncols=5)
for row in range(20):
for col in range(5):
ax[row,col].plot(x, y)
plt.show()
答案 1 :(得分:0)
您可以执行以下操作:
提供此数据:
1 mo 2 mo 3 mo 6 mo 1 yr 2 yr 3 yr 5 yr 7 yr 10 yr \
30/11/2018 2.31 2.33 2.37 2.52 2.70 2.80 2.83 2.84 2.92 3.01
31/12/2018 2.44 2.45 2.45 2.56 2.63 2.48 2.46 2.51 2.59 2.69
31/01/2019 2.42 2.43 2.41 2.46 2.55 2.45 2.43 2.43 2.51 2.63
28/02/2019 2.44 2.47 2.45 2.50 2.54 2.52 2.50 2.52 2.63 2.73
31/03/2019 2.43 2.44 2.40 2.44 2.40 2.27 2.21 2.23 2.31 2.41
30/04/2019 2.43 2.44 2.43 2.46 2.39 2.27 2.24 2.28 2.39 2.51
31/05/2019 2.35 2.38 2.35 2.35 2.21 1.95 1.90 1.93 2.03 2.14
30/06/2019 2.18 2.15 2.12 2.09 1.92 1.75 1.71 1.76 1.87 2.00
31/07/2019 2.01 2.07 2.08 2.10 2.00 1.89 1.84 1.84 1.92 2.02
31/08/2019 2.10 2.04 1.99 1.89 1.76 1.50 1.42 1.39 1.45 1.50
20 yr 30 yr
30/11/2018 3.19 3.30
31/12/2018 2.87 3.02
31/01/2019 2.83 2.99
28/02/2019 2.94 3.09
31/03/2019 2.63 2.81
30/04/2019 2.75 2.93
31/05/2019 2.39 2.58
30/06/2019 2.31 2.52
31/07/2019 2.31 2.53
31/08/2019 1.78 1.96
代码:
fig, axes = plt.subplots(nrows=2, ncols=5, figsize=(16, 8))
for row, ax in zip(df.index, axes.flatten()):
ax.plot(df.loc[row].values)
ax.set_title(row, fontsize=10)
ax.set_xticks(range(df.shape[1]))
ax.set_xticklabels(list(df.columns), rotation=90, fontsize=8)
plt.show()
您可能需要整理一下,然后将其扩展为(20,5)尺寸。
也请参阅本教程,其外观类似于您想要的内容:https://napsterinblue.github.io/notes/python/viz/subplots/
除了在这种情况下,他们绘制的是列而不是行。