在条形图中绘制两个y轴以获取列表列表

时间:2019-05-13 16:58:09

标签: python numpy matplotlib

我有两个列表,如下所示。

list1=[[0,2],[1,4],[2,5]]
list2=[[0,3.5],[1,9],[2,0.2]]

我想用两个y轴并排显示两个列表的条形图。两者的X轴值都相同(列表的第一元素)。

通过以下代码,我设法将它们放在相同的图上,但是只有一个y轴。

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
x1,y1 = zip(*list1)
x2,y2 = zip(*list2)
plt.figure()
plt.bar(np.array(x1)-0.15, y1, width = 0.3)
plt.bar(np.array(x2)+0.15, y2, width = 0.3)

plt.xticks(range(min(x1+x2), max(x1+x2)+1))

1 个答案:

答案 0 :(得分:0)

您需要创建一个双轴。可以使用twinx()完成。完整答案如下

import matplotlib.pyplot as plt
import numpy as np

list1=[[0,2],[1,4],[2,5]]
list2=[[0,3.5],[1,9],[2,0.2]]

x1,y1 = zip(*list1)
x2,y2 = zip(*list2)

fig, ax = plt.subplots()
ax.bar(np.array(x1)-0.15, y1, width = 0.3, color='blue')
ax.set_ylabel('List 1', fontsize=16)

ax2 = ax.twinx()
ax2.bar(np.array(x2)+0.15, y2, width = 0.3, color='red')
ax2.set_ylabel('List 2', fontsize=16)

plt.xticks(range(min(x1+x2), max(x1+x2)+1))
plt.show()

enter image description here