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

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

詳細はこちら
Matplotlib

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

Python

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

Q&A

解決済

1回答

931閲覧

matplotlibによるグラフ描写

shion_shion

総合スコア3

Matplotlib

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

Python

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

0グッド

0クリップ

投稿2020/12/07 14:21

編集2020/12/07 17:40

イメージ説明イメージ説明イメージ説明イメージ説明### 前提・実現したいこと

matplotlibを使用したグラフの描写

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

グラフの枠だけが表示され、点がプロットされないです。

該当のソースコード

Python

1print("aの長さ") 2a=input() 3a=int(a) 4 5print("bの長さ") 6b=input() 7b=int(b) 8 9print("Lの長さ") 10L=input() 11L=int(L) 12 13print("E") 14E=input() 15E=int(E) 16 17print("I") 18I=input() 19I=int(I) 20 21print("Pの荷重") 22P=input() 23P=int(P) 24 25import numpy as np 26import matplotlib.pyplot as plt 27 28for x in range(3000): 29 30 if x < 1200 : 31 y == (a*P)/(6*E*I*L)*(L-x)*(-((L-x)^2)-b*(L+a)) 32 else : 33 y == (b*P)*(-x**2+a*(L+b))/(6*E*I*L) 34 35plt.plot(x,y) 36plt.grid(which="major",color="gray",linestyle="-") 37plt.xlim(0,L) 38plt.ylim(0,y) 39plt.show()

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

GoogleColabolatryを使用しています。

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

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

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

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

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

Daregada

2020/12/07 14:44

末尾のforから後が、yの値が未定義のまま比較していたり(代入していない)、とても「グラフの枠だけが表示され」まで進めなさそうなのですが、実際に使っているコードと違っていませんか?
meg_

2020/12/07 15:00

質問のコードを実行すると「NameError: name 'y' is not defined」のエラーが出たので、現象を確認出来ませんでした。
shion_shion

2020/12/07 15:05

実際に実行した画像を添付させて頂きました。
Daregada

2020/12/07 15:07

あー、xとかyとかを、別のセルで以前使ったので定義済みになっているパターンだな。
shion_shion

2020/12/07 15:13

すみません、プログラミング自体始めたばかりでわからない事だらけなのですが、教えてもらえますでしょうか??
Daregada

2020/12/07 15:20

Google Colabの「ファイル」メニューを開いて、「ノートブックを新規作成」を選択してください。 新しいノードブックが開いたら、そこに今回のコードだけを貼り付けて、実行してみてください。 あなた以外の人にとっては、あなたのプログラムはそのように動いています。
shion_shion

2020/12/07 15:28

アドバイスありがとうございます。実際にその様になりました。 これはどの様にすれば解決しますでしょうか?
guest

回答1

0

ベストアンサー

描きたいのはこんなグラフでしょうか?
補足: 場合分けの大小が逆になっていたのに加え、片方は* xが式から抜けていた。また、Pythonでは累乗の演算子は**だが、片方の式では間違って^を使っていた。

Python

1import matplotlib.pyplot as plt 2 3a = 1200 4b = 1800 5L = 3000 6E = 66700 7I = 17280000 8P = 3000 9 10 11x = list(range(L)) 12y = [(b * P) * (-x_i**3 + a * (a + 2 * b) * x_i) / (6 * E * I * L) 13 if x_i < a else (a * P) / (6 * E * I * L) * (-(L - x_i)**3 + b * (2 * a + b) * (L - x_i)) for x_i in x] 14 15plt.grid(which="major", color="gray", linestyle="-") 16plt.xlim(0, L) 17plt.ylim(min(y) - 1, max(y) + 1) 18 19 20plt.plot(x, y) 21plt.show() 22

さらに修正後のグラフ

投稿2020/12/07 15:47

編集2020/12/07 17:57
Daregada

総合スコア11990

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

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

shion_shion

2020/12/07 16:32

回答ありがとうございます。 Excelで作ったグラフですが画像のようなグラフになりました。 何度も聞いてしまい、申し訳ありません...
Daregada

2020/12/07 17:16

Excelのグラフ、後半の式が間違ってませんかね。
shion_shion

2020/12/07 17:41

すみません。Excelでの後半の式は正負が逆だったようです。 実際には新しく載せた画像のようになるそうです。
Daregada

2020/12/07 17:46

そうですも何も、途中で載せた式では2乗のところが3乗になっているし全然違う式ですよね。グラフも違って当然なのでは。
shion_shion

2020/12/07 17:54

二乗が三乗になっているのは式を一部展開しているだけで式としては変わらないはずなのですが…
Daregada

2020/12/07 18:06

あとはL=a+bなので、同じ式になるわけですね。 いやいや、それを後出しされても困るので、最初から現在先頭にある画像を出してくれればいいのに。
shion_shion

2020/12/07 18:15

すみませんでした。 最初に出した式と後から出した式では基本的に何も変わらないと思ってしまっていました。 何度も何度も修正していただきありがとうございました。 とても助かりました。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問