質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • Python

    8565questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • CSV

    671questions

    CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

  • pandas

    630questions

    Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

CSVからmatplotlib.pyplotでグラフを作成したい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 600

 前提・実現したいこと

CSVからmatplotlib.pyplotでグラフを作成したいです。
一応はグラフ作成できるのですが、もっとスマートなやり方があれば、教えていただきたいです。

 該当のソースコード

import pandas as pd
import matplotlib.font_manager
import matplotlib.pyplot as plt

df = pd.read_csv(r'C:\Users\username\Desktop\list.csv', encoding='SHIFT-JIS')
size_df = len(df.index)
x_pos = range(0, size_df)
data = df["num"]
labels = df["item"]

fp = matplotlib.font_manager.FontProperties(fname=r'C:\Windows\Fonts\meiryo.ttc', size=16)
plt.xticks(rotation=0, fontproperties=fp)
plt.bar(x_pos, data, tick_label=labels, align='center')

""""
装飾
plt.style.use('ggplot')
plt.title('タイトル', fontproperties=fp)
plt.xlabel('名前', fontproperties=fp)
plt.ylabel('数量', fontproperties=fp)
"""
plt.show()

list.csv
|item|num|
|りんご|8|
|みかん|4|
|ばなな|3|

 補足情報(FW/ツールのバージョンなど)

AnacondaのSpyderで作業しています。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • magichan

    2018/04/20 08:44

    できましたら、list.csv の構成も記述してください。

    キャンセル

  • data-analysis

    2018/04/20 08:49

    ご依頼ありがとうございます。list.csv の構成を記述しました。

    キャンセル

回答 1

checkベストアンサー

+3

labelに日本語をふくまないのであれば

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(r'C:\Users\username\Desktop\list.csv', encoding='SHIFT-JIS')
df.plot(kind='bar', x='item', y='num', rot=90)
plt.show()

でよい気がします。

日本語がある場合は、xticklabels(label, fontproperties=fp) を呼ぶ必用がありそうですので

import pandas as pd
import matplotlib.font_manager as fm
import matplotlib.pyplot as plt

fp = fm.FontProperties(fname=r'C:\Windows\Fonts\meiryo.ttc', size=16)
df = pd.read_csv(r'C:\Users\username\Desktop\list.csv', encoding='SHIFT-JIS')
ax = df.plot(kind='bar', x='item', y='num', rot=90)
ax.set_xticklabels(ax.get_xticklabels(), fontproperties=fp)
plt.show()

でしょうか。

個人的にはデフォルトのフォントの設定を変えておくほうが楽な気がします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/20 09:54

    ご回答ありがとうございます。今は時間がないので、後日しっかりと確認させていただきます。

    キャンセル

  • 2018/04/23 08:07

    すっきりと圧縮されて、わかりやすいコードにしていただき、ありがとうございました!
    かなり余分なことをしていたんですね。。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    matplotlibで横軸のラベルを縦書きにしたい

    pythonのmatplotライブラリの質問です. あるグラフを作成する際に,横軸のラベルを日本語の文字列にしています. デフォルトだと,文字列は横書きで表示されるのですが

  • 解決済

    2次元グラフと3次元散布図のアニメーション付加

    前提・実現したいこと 同一グラフでの静止とアニメーションの付加。(2次元グラフ、3次元散布図) 発生している問題・エラーメッセージ やり方が分からない 該当のソースコード

  • 解決済

    matplotlib.pyplot.scatter で軸の値を変更

    前提・実現したいこと 現在、pythonでmatplotlib.pyplot.scatterを用いて散布図を書こうとしています。 そのときに、軸の値を変更する方法を知りたいです。

  • 解決済

    グラフへの自動プロット

    いつもお世話になっております。 前提・実現したいこと プログラム(グラフ)を実行した状態のままCSVファイル(aiueo.csv)に値を追加(削除)した時に実行中のファイルに値

  • 解決済

    python棒グラフの順番

     前提・実現したいこと 数値とラベルを持つあるデータをについて、数値でソートして その結果を棒グラフとして出力したいと思っています。  発生している問題・エラーメッセージ ソー

  • 解決済

    matplotlibの使い方について

    matplotlibで辞書型を使って、棒グラフを作る方法が分かりません。 ご教授いただければ幸いです。

  • 解決済

    各凡例ラベルを1つのみ表示させたい

     前提・実現したいこと 各motion3個の線を表示させつつ(計10個の線)、凡例ラベルの同名で表示されているものを1つにまとめたい  発生している問題・エラーメッセージ こち

  • 解決済

    Matplotlibでのカラーバーの表示方法について

    少し込み入ったグラフを作成したいと考えております。 どういうものかというと、 基本的には、 次のように配列xとyにそれぞれ値が入っており、 x = [1, 2, 3, ...]

同じタグがついた質問を見る

  • Python

    8565questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • CSV

    671questions

    CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

  • pandas

    630questions

    Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。