web-dev-qa-db-ja.com

matplotlib棒グラフ:スペースバー

Matplotlibバーチャートを使用して各バーの間隔を広げる方法は、中央に詰め込み続けるためです。 enter image description here (これは現在の外観です)

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()
15
Smith

交換してみてください

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)
19
swatchai

バー間の間隔を広げるには2つの方法があります。参考として、プロット関数を紹介します。

plt.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

バーの幅を狭くする

プロット関数には、バーの幅を制御する幅パラメーターがあります。幅を小さくすると、バー間のスペースが自動的に小さくなります。幅はデフォルトで0.8に設定されています。

width = 0.5

バーが互いに離れるようにx軸をスケーリングします

幅を一定に保ちたい場合は、バーが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)
5
ShikharDua