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

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

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

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

NumPy

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

Python

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

解決済

連続してグラフを表示する方法

momo0729
momo0729

総合スコア1

Matplotlib

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

NumPy

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

Python

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

2回答

0評価

0クリップ

401閲覧

投稿2021/12/16 07:46

編集2021/12/17 07:12

![イメージ説明
XとZ(Y)の値がそれぞれ10点ずつ分かっています。この値を使いプロットした点と近似線を描きたいと考えています。一度目のグラフはxの点の値を2点とzの点の値の2点を利用した2点を結ぶグラフを、二度目のグラフはxの点の値を3点とzの点の値の3点を利用した3点を結ぶ近似線を描きたいと考えています。そのような流れで9回目は10点を使ったグラフを描きたいです。分かる方がいらっしゃればご協力をお願いします。近似の方法については理解しているので連続したグラフの書き方を教えて頂きたいです。

python

コード import matplotlib.pyplot as plt import numpy as np import math M1_pc_x= -246.85208505175171 M2_pc_x= -206.0777831639721 M3_pc_x= -158.6928488559446 M4_pc_x= -109.03772091048792 M5_pc_x= -56.70788713910241 M6_pc_x= 57.381886142634436 M7_pc_x= 119.77207995050162 M8_pc_x= 185.73675716265856 M9_pc_x= 255.11219747743775 M10_pc_x= 327.6548726847677 x = np.array([M1_pc_x, M2_pc_x, M3_pc_x, M4_pc_x, M5_pc_x, M6_pc_x, M7_pc_x, M8_pc_x, M9_pc_x, M10_pc_x]) M1_pc_z= 621 M2_pc_z= 632 M3_pc_z= 648 M4_pc_z= 666 M5_pc_z= 687 M6_pc_z= 719 M7_pc_z= 744 M8_pc_z= 767 M9_pc_z= 789 M10_pc_z= 810 z1 = np.array([M1_pc_z, M2_pc_z, M3_pc_z, M4_pc_z, M5_pc_z, M6_pc_z, M7_pc_z, M8_pc_z, M9_pc_z, M10_pc_z]) xz1 = x*z1 x2 = x*x n = len(x) for n in range(len(x)): m_y = ((n*sum(xz1)-sum(x)*sum(z1)) / (n*sum(x2)-sum(x)*sum(x))) y_angle = math.atan(m_y) b_y = ((sum(z1) - m_y*sum(x)) / n) Y1 = (m_y*x) + b_y for Mc_pc_x , Mc_pc_z in zip (x,z1): fig = plt.figure(figsize=(8.0, 6.0)) plt.title("yaw") plt.xlabel("X-axis") plt.ylabel("Z-axis") plt.scatter(i,j,label="original") plt.plot(i,Y1,label="fitting",color='r') plt.legend() plt.show()

現在は1つ目のグラフで1つ目の値が、2つ目のグラフで2つ目の値のみが、・・・10個目のグラフで10個目の値のみが記される状況となっています。(近似線は全てに表示されています)

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

ppaul

2021/12/16 08:09

エラーが出ないような修正は可能ですが、おそらくmomo0729さんが求めるものとは違っています。 欲しいものを普通の日本語で書いてみてください。
momo0729

2021/12/16 08:19

承知しました。私はグラフを合計9回描きたいと考えています1回目のグラフはM1_pc_x、M2_pc_x、M1_pc_z、M2_pc_zの計4点を用い近似線(2点しかないためずれは生じませんが)を、2回目以降のグラフはM1_pc_x、M2_pc_x、M3_pc_x、M1_pc_z、M2_pc_z、M3_pc_zの計6点を用いその点とその点に近似する直線を、同様に3,4,5回とグラフを描き最後の9回目は全ての値を使った近似線を描きたいと考えています。
bsdfan

2021/12/16 22:47

ひとつのグラフに9本の線をプロットしたいという意味であってますか? それとも9個のグラフに1本ずつプロットしたいのでしょうか?
momo0729

2021/12/17 02:26

後者です。1つ目のグラフはM1_pc_xとM1_pc_zの値を1つ目の点として、M2_pc_x、M2_pc_zを2点目の点としてプロットしその近似線を描きたいと考えています。2つ目のグラフはM1_pc_x、M1_pc_zを1点目の点、M2_pc_x、M2_pc_zを2点目の点M3_pc_x、M3_pc_zを3点目の点としてプロットしそれぞれの点の近似線を描きたいと考えています。そのため最終的に9個のグラフが出来上がるようにしたいです。ややこしくて申し訳ございません。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Matplotlib

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

NumPy

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

Python

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