如何使用matplotlib条形图增加每个条形图之间的空间,因为它们会将它们自我填充到中心。(这是它目前的样子)
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
def ww(self):#wrongwords text file
with open("wrongWords.txt") as file:
array1 = []
array2 = []
for element in file:
array1.append(element)
x=array1[0]
s = x.replace(')(', '),(') #removes the quote marks from csv file
print(s)
my_list = ast.literal_eval(s)
print(my_list)
my_dict = {}
for item in my_list:
my_dict[item[2]] = my_dict.get(item[2], 0) + 1
plt.bar(range(len(my_dict)), my_dict.values(), align='center')
plt.xticks(range(len(my_dict)), my_dict.keys())
plt.show()
答案 0 :(得分:16)
尝试替换
plt.bar(range(len(my_dict)), my_dict.values(), align='center')
与
plt.figure(figsize=(20, 3)) # width:20, height:3
plt.bar(range(len(my_dict)), my_dict.values(), align='edge', width=0.3)
答案 1 :(得分:3)
有两种方法可以增加条形之间的间距 供参考的是绘图功能
plt.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)
绘图功能具有控制条形宽度的width参数。如果减小宽度,则条形之间的间距将自动减小。默认情况下,您的宽度设置为0.8。
width = 0.5
如果要保持宽度恒定,则必须在x轴上放置钢筋的位置隔开。您可以使用任何缩放参数。例如
x = (range(len(my_dict)))
new_x = [2*i for i in x]
# you might have to increase the size of the figure
plt.figure(figsize=(20, 3)) # width:10, height:8
plt.bar(new_x, my_dict.values(), align='center', width=0.8)
答案 2 :(得分:2)
此答案更改了条形之间的间距,并且还在x轴上旋转了标签。它还可以让您更改图形尺寸。
fig, ax = plt.subplots(figsize=(20,20))
# The first parameter would be the x value,
# by editing the delta between the x-values
# you change the space between bars
plt.bar([i*2 for i in range(100)], y_values)
# The first parameter is the same as above,
# but the second parameter are the actual
# texts you wanna display
plt.xticks([i*2 for i in range(100)], labels)
for tick in ax.get_xticklabels():
tick.set_rotation(90)
答案 3 :(得分:0)
将 x 轴范围从稍微负值开始设置为比绘图中的条形数量略大的值,并在 barplot 命令中更改条形的宽度
例如,我为只有两个条形的条形图执行此操作
ax1.axes.set_xlim(-0.5,1.5)