我有两个列表,如下所示。
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))
答案 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()