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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Matplotlib

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

3632閲覧

matplotlibのy軸間隔が一定でなくグラフが正しく表示されない

zihhzihh

総合スコア5

Matplotlib

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

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/06/27 09:44

編集2020/06/27 09:51

前提・実現したいこと

matplotliを用いて、現在csvデータからプロットをしてグラフを書きたいと考えているのですが、y軸のメモリがおかしく、本来は一次関数的にはならないグラフがきっちりとした直線になって表示されてしまい、y軸の間隔も一定でなく困っています。(添付した図のようになってしまいます)
イメージ説明

該当のソースコード

python![イメージ説明](30b0cf64e519c673de853a506896f0c5.png)

1import numpy as np 2import matplotlib.pyplot as plt 3import matplotlib as mpl 4 5def expe_one(): 6 expe1 = pd.read_csv("exp1.csv") 7 print(expe1.head()) 8 x = ['0', '5', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55', '60', '65', '70', '75', '80', '85', '90', '95', '100', '105', '110', '115', '120', '125', '130', '135', '140', '145', '150', '155', '160', '165', '170', '175', '180', '185', '190', '195', '200', '205', '210', '215', '220', '225', '230'] 9 y = ['0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0.1', '0.2', '0.5', '1', '2', '3.4', '5.5', '9.1', '13.2', '18.6', '23.8', '29.6', '35.2', '42.6', '48.9', '55.7', '61.7', '66.7', '71.1', '75.6', '78.3', '80.3', '82.2', '82.8', '82.1', '80.5', '77.9', '76.5', '75.8', '76.3', '77'] 10 11 plt.rcParams['figure.figsize'] = (12.0, 9.0) 12 13 #グラフの作成 14 fig, ax = plt.subplots() 15 16 #グラフの軸 17 ax.set_xlabel("distance (mm)") 18 ax.set_ylabel("value (mV)") 19 ax.set_xticks(np.arange(0,230+1,5)) 20 ax.set_yticks(np.arange(0,80+1,10)) 21 ax.set_xlim(0, 47) 22 ax.set_ylim(0, 33) 23 24 ax.plot(x,y,"-o") 25 26if __name__ == "__main__": 27 expe_one() 28 29

試したこと

xticksなどで目盛を設定しようとした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

x値およびy値が文字列型のデータだからです。

Python

1x = ['0', '5', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55', '60', '65', '70', '75', '80', '85', '90', '95', '100', '105', '110', '115', '120', '125', '130', '135', '140', '145', '150', '155', '160', '165', '170', '175', '180', '185', '190', '195', '200', '205', '210', '215', '220', '225', '230'] 2y = ['0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0.1', '0.2', '0.5', '1', '2', '3.4', '5.5', '9.1', '13.2', '18.6', '23.8', '29.6', '35.2', '42.6', '48.9', '55.7', '61.7', '66.7', '71.1', '75.6', '78.3', '80.3', '82.2', '82.8', '82.1', '80.5', '77.9', '76.5', '75.8', '76.3', '77']

ですので、この部分を数値型のデータにすると良いかと思います。

Python

1x = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160, 165, 170, 175, 180, 185, 190, 195, 200, 205, 210, 215, 220, 225, 230] 2y = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.1, 0.2, 0.5, 1, 2, 3.4, 5.5, 9.1, 13.2, 18.6, 23.8, 29.6, 35.2, 42.6, 48.9, 55.7, 61.7, 66.7, 71.1, 75.6, 78.3, 80.3, 82.2, 82.8, 82.1, 80.5, 77.9, 76.5, 75.8, 76.3, 77]

イメージ説明

投稿2020/06/27 10:07

magichan

総合スコア15898

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

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

zihhzihh

2020/06/27 10:09

その部分だったのですね...... 本当にありがとうございます!!!ずっと詰まっていたので本当に助かりました!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問