🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

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

Q&A

解決済

1回答

5046閲覧

グラフが直線になってしまう

12de17se

総合スコア7

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

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

0グッド

0クリップ

投稿2019/12/09 09:53

編集2019/12/09 10:23

前提・実現したいこと

Python3にてとあるcsvファイルからグラフを作成したのですが、グラフが直線になってしまい、、Y軸の値がバラバラになりました。しかし、エラーのメッセージすら出ずどうしていいのかわかりません。なぜ直線になるのかも教えていただけると幸いです。
質問主はプログラミング初心者です

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

import numpy as np from numpy import random import pandas as pd import matplotlib as mpl import numpy as np from numpy import random import pandas as pd import matplotlib as mpl import matplotlib.pyplot as plt %matplotlib inline font = {"family":"Yu Mincho"} mpl.rc('font',**font) df_jinkou1 = pd.read_csv("Date/E2_jinkou.csv",engine="python", names=['年次','総人口(千人)']) df_jinkou1     年次 総人口(千人) 0 2000 126,926 1 2001 127,316 2 2002 127,486 3 2003 127,694 4 2004 127,787 5 2005 127,768 6 2006 127,901 7 2007 128,033 8 2008 128,084 9 2009 128,032 10 2010 128,057 11 2011 127,834 12 2012 127,593 13 2013 127,414 14 2014 127,237 15 2015 127,095  plt.figure(figsize=(10,4)) plt.title('年次別人口') plt.xlabel('年次') plt.ylabel('総人口(千人)') plt.plot(df_jinkou1['年次'],df_jinkou1['総人口(千人)'],linewidth=3, marker='D',markersize=5,markerfacecolor="r",markeredgecolor="g") plt.legend() plt.grid() コード

試したこと

ここに問題に対して試したことを記載してください。

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

イメージ説明

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2019/12/09 10:02

「グラフが直線になってしまい、、Y軸の値がバラバラ」ということは、X軸の値もバラバラになっているのですか?(X軸の値と、Y軸の値が同じようにバラバラでないと、直線のグラフにはならないですよね) もう少し、状況を具体的に示してもらえませんか?
y_waiwai

2019/12/09 10:11

このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
12de17se

2019/12/09 10:26

グラフのスクショを添付しました また、コードに貼り付けを行いました
guest

回答1

0

ベストアンサー

可能性としては、'総人口(千人)' 列の値が数値ではなく、文字列として扱われているのではないでしょうか。

試しに

Python

1print(df_jinkou1.dtypes)

としてみてください。すると **'年次'列およびに'総人口(千人)'**列の型が表示されますので、この値が 'object' と表示される場合は値は文字列として扱われています。

もし文字列として扱われている場合は

Python

1df_jinkou1['総人口(千人)'] = df_jinkou1['総人口(千人)'].astype(int)

のようにして型を変更した後にグラフを描画してください。


【補足】

質問での '総人口(千人)' の値の '126,926'の 1000区切りの ',' も文字列として記述されているかもしれません。その場合は最初にこの ',' を削除してから型を変更する必要があるかもしれません

Python

1df_jinkou1['総人口(千人)'] = df_jinkou1['総人口(千人)'].str.replace(',', '').astype(int)

投稿2019/12/09 10:43

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

12de17se

2019/12/09 10:52

'object'と出ました。補足のほうでやったらできたので「,」も文字列として記述されていたようです。回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問