【发布时间】:2019-02-21 11:44:43
【问题描述】:
我有一个要使用直方图绘制的数据列表。我想分别缩放每个情节的y-axis。如果我喜欢以下内容,它会将每个绘图的 y-axis 缩放 10。
protocols = {}
types = {"data1": "data1.csv", "data2": "data2.csv", "data3": "data3.csv"}
for protname, values in protocols.items():
fig, ax1 = plt.subplots()
ax1.hist(values["col_data"], facecolor='blue', alpha=0.9, label=protname,align='left')
y_vals = ax1.get_yticks()
ax1.set_yticklabels(['{:3.0f}'.format(x * 10) for x in y_vals])
plt.legend()
plt.show()
但是,我希望每个直方图的缩放比例是分开的。我尝试了以下方法,但它似乎没有按预期工作。
for protname, values in protocols.items():
fig, ax1 = plt.subplots()
ax1.hist(values["col_data"], facecolor='blue', alpha=0.9, label=protname,align='left')
y_vals = ax1.get_yticks()
ax1.set_yticklabels(['{:3.0f}'.format(x * 10) for x in y_vals if protname=="data1" and ['{:3.0f}'.format(x * 10) for x in y_vals if protname=="data2" and ['{:3.0f}'.format(x * 15) for x in y_vals if protname=="data3"]]])
plt.legend()
plt.show()
如果我们仅尝试将一个图设为ax1.set_yticklabels(['{:3.0f}'.format(x * 10) for x in y_vals if protname=="data2"]),它只会将更改应用于第二个图,而将其他图留空。
【问题讨论】:
标签: python python-3.x numpy matplotlib histogram