直到现在我还没有想到带底部偏移的条形图,这似乎没问题:
layer0 = np.random.random(10) fig, ax = plt.subplots(1,1, figsize=(15/1.3,1.5*2.5),)# sharey=True) ind = np.arange(10, dtype=np.float64)*1#cordx height=0.03 width=0.8 ax.bar(ind[0::2]-width/2, height, width=width, bottom=layer0[0::2]-height) ax.bar(ind[0::2]+width/2, height, width=width, bottom=layer0[1::2]-height) ax.set_ylim(-0.,1.05) plt.grid(color='black', which='major', axis='x', linestyle='-', lw=0.8)
或者,您可以使用水平条形图 barh 在这种情况下更直观。这里的关键参数是 left 这会将您的水平条形图向左/右移动。
barh
left
以下是一个完整的答案:
import numpy as np import matplotlib.pyplot as plt np.random.seed(2) layer0 = np.random.random(10) fig, ax = plt.subplots(1,1, figsize=(15/2,1.5*2.5),) n = 10 width = 0.5 ind = np.arange(n, dtype=np.float64)*1#cordx ax.barh(layer0[0::2], [width]*int(n/2), height=0.01, left = ind[0::2]) ax.barh(layer0[1::2], [width]*int(n/2), height=0.01, left = ind[0::2]+width) ax.set_ylim(0,1.05) ax.set_yticks(np.arange(0, 1.1, step=0.1)) ax.set_xticks(ind[0::2]+0.5) ax.set_xticklabels( ('SDR', 'SSR', 'SCR', 'RCR', 'GUR') ) plt.grid(b=True) plt.grid(color='black', which='major', axis='y', linestyle='--', lw=0.2) plt.show()