前提・実現したいこと
最近pythonを学び始めた超初心者です。
とあるcsvをグラフ化して見やすいレポートを作ろうと思い、色々情報をググって、CSVから取り込んだデータをグラフ化したところ、棒グラフ内の数値がズレたり、一部グラフの高さが数値に反して高くなったりしています。
色々調べたのですが。。。
何がどう間違えてこうなってるのかがさっぱり分からないので、どうすればよいか教えて頂きたいです。
環境はjupyter labを使用しております。
該当のソースコード
pip install japanize-matplotlib import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib.ticker as ticker import japanize_matplotlib plt.rcParams['font.size'] = 12 # グラフの基本フォントサイズの設定 input_file = 'asin.csv' df = pd.read_csv(input_file, header=0, encoding="utf-8") # 'utf-8' 'shift-jis' 'cp932' df x_name = 'タイトル' y_name = '注文された商品数' DF = df.sort_values([y_name], ascending=True) DF fig = plt.figure(dpi=100,figsize=(20,5)) plt.bar(DF[x_name], DF[y_name], 0.6, color='c', label=y_name) # 'magenda' for i, j in enumerate(np.array(DF[y_name])): print(i, j) plt.text(i, j, str(int(j)), ha='center', va='bottom', color='black')#, size=14) plt.ylabel(y_name) ax = plt.gca() # get current axes 現在の軸設定データを取得する ax.set_facecolor('lightyellow') # 背景色の指定' x_min, x_max = ax.get_xlim() # x軸座標の最小と最大を取得 plt.xticks(rotation=270) # 基準値の挿入 y_spec = 1000 # 横線を入れる plt.hlines(y_spec, x_min, x_max, 'r', linestyles='dashed') # テキストを挿入する plt.text(x_min, y_spec + 100, str(y_spec), size=14, color='r') # y軸のラベル表記の間隔を指定 y_ticklabels = ax.get_yticklabels() # デフォルトの目盛り表記をゲットする tick_spacing = 100 # 目盛り表示する間隔 ax.yaxis.set_major_locator(ticker.MultipleLocator(tick_spacing)) # X軸目盛の表示間隔を間引く # 凡例を表示 ax.legend(bbox_to_anchor=(1, 0.95)) # 凡例の位置 plt.grid(which="major", axis="y", color="black", alpha=0.5, linestyle="-", linewidth=0.5) #plt.tight_layout()
試したこと
色々コードを書き換えたり、調べたりしましたが恐らく的外れなことばかりやっていました。
補足情報(FW/ツールのバージョンなど)
出てきたグラフがこちらです。
左から6番目のx軸の5のグラフがなぜか高かったり、棒グラフ内の数値が最後の方は1つ右にズレてしまっています。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/12 07:36 編集
2021/10/12 08:57