在Matplotlib中设置条间距

r7s23pms  于 2023-03-19  发布在  其他
关注(0)|答案(1)|浏览(169)

我不知道如何控制下面从文件阅读数据的代码中的条形间距。有没有办法调整条形间距(不是条形宽度)?

输入文件

一万四千五百
二万五千元
三万三千
四万四千
五千
六万五千

#!/usr/bin/python
import numpy as np
import pylab as plot
import matplotlib.pyplot as plt
import numpy, scipy, pylab, random
from matplotlib.ticker import MultipleLocator
import matplotlib as mpl
from matplotlib.ticker import MaxNLocator

with open("file.txt", "r") as f:
    x=[]
    y=[]
    for line in f:
        if not line.strip() or line.startswith('@') or line.startswith('#'): continue
        row = line.split()
        x.append(float(row[0]))
        y.append(float(row[1]))

fig = plt.figure(figsize=(3,2))
ax = plt.subplot(111)

plt.ylim(0, 6000)
ax.yaxis.set_major_locator(MaxNLocator(6))
ax.yaxis.set_minor_locator(MultipleLocator(500))
plt.xlim(0+0.5, 7-0.5)

bars=plt.bar(x,y, width=0.2, color='blue', edgecolor='black', align='center', linewidth=0.5)

bars[0].set_facecolor('gray')
bars[1].set_facecolor('orange')
bars[2].set_facecolor('green')
bars[3].set_facecolor('yellow')
bars[4].set_facecolor('cyan')
bars[5].set_facecolor('deeppink')

labels=['A', 'B', 'C', 'D', 'E', 'F']
plt.xticks(x, labels, rotation='45', rotation_mode='anchor', ha='right')

plt.ylabel('Values (m)', fontsize=7)

for axis in ['top','bottom','left','right']:
  ax.spines[axis].set_linewidth(0.5)

plt.subplots_adjust(top=0.97)
plt.subplots_adjust(bottom=0.05)
plt.subplots_adjust(left=0.07)
plt.subplots_adjust(right=0.98)

plt.tick_params(axis='both', which='major', labelsize=6)
plt.tick_params(axis='both', which='minor', labelsize=0)

plt.savefig("plot.png", dpi=300, bbox_inches='tight')

c3frrgcw

c3frrgcw1#

解决方案(我已经尝试过matplotlib 3.5.2版)在这行代码中:

x.append(float(row[0]))

如果你做一些

x.append(float(row[0])+0.5/float(row[0]))

你会注意到条之间的空间的变化。在上面的行中,我将向x坐标添加一个分量,如果row[0]的值增加,该分量将变小。

相关问题