物理学の割り当てのためにJupyterノートブックを作成する必要があり、いくつかの量の進化などを示すグラフを描画する必要があります...
私が書いたコードのほぼすべての行をplot()
、私の問題の原因である呼び出しを含め、毎回コードセルとMarkdownセルを交互に使用して説明する必要があります。非常に簡単に言えば、私は次のようなものを持っています:
最初にmatplotlib.pyplot
モジュールをインポートします:
from matplotlib import pyplot as plt
次に、データから値のリストを作成します。
# making up stuff
x_values = range(10)
doubles = [x * 2 for x in x_values]
squares = [x**2 for x in x_values]
まず、次の曲線をプロットしますdoubles
。
%matplotlib inline
plt.plot(x_values, doubles, color='red', label='x * 2')
ダブルスのグラフが表示されます(ダブルスのみ)
次に、プロットしますsquares
:
%matplotlib inline
plt.plot(x_values, squares, color='red', label='x^2')
正方形のグラフが表示されます(正方形のみ)
そして最後に、グラフを構成して表示します。
%matplotlib inline
plt.xlabel("x")
plt.ylabel("f(x)")
plt.ylim(0, 50)
plt.xlim(0, 11)
plt.legend()
plt.grid(True)
plt.show()
ラベル、グリッド、制限が正しく設定された空のグラフが表示されますが、曲線や凡例はまったく表示されません
最後のセルは、2つの曲線と凡例、および構成したすべてのものを含むグラフを示しています。
最後のセルは、曲線や凡例のない空のグラフを示しています
ただし、plot()
他のすべてのものを使用して最後のセルに呼び出しを配置しようとすると、曲線や凡例などを含む期待されるグラフが得られます...しかし、残念ながら、実際の割り当てではそれを行うことはできません:/
また、%matplotlib inline
行のほぼすべての値を試しました。複数のセル、複数の配置などを試しましたが、問題は解決しません。
少しグーグルすると、ノートブックの最初の行はmatplotlibなどに関して少し異なる動作をしているように見えますが、これは私のノートブックの最初のセルに近いわけではないので、そうではありません。
正直なところ、なぜそうなるのかわかりません。pyplot
ある種のステートマシンとして機能する場所を読んだと思うので、複数の行にまたがって混乱しているかもしれませんが、他のこと(ラベル、スタイルなど)については期待どおりに機能します。私は今無知です。
だから私の質問は:これは通常の動作ですか、それはバグですか、それとも何かが足りないだけですか?
編集:作品を使用fig, ax = plt.subplots(1, 1)
してプロットするように見えますax
が、問題は、簡単に説明できない複雑さを追加し、かなり不格好であり、「同じセルにあるときになぜそれが機能するのか」と答えないことです、しかし、線が異なるセルにある場合はそうではありませんか?」
これは、JupyterNotebookの正常な動作です。1つのプロットのすべてのコマンドが同じセルにあることを想定し、セルが終了すると、プロットをレンダリングします。だからあなたは必要ありませんplt.show()
。ちなみに、%matplotlib inline
異なる表示モードを切り替えたい場合を除いて、IPythonマジックコマンドはノートブックごとに1回だけ必要です。
プロットコマンドのすべての行に注釈を付けるには、もちろん、セル内でPythonコメントを使用することもできます。Markdownを使用する必要がある場合、簡単な回避策は、コマンドラインを番号コメントで列挙するか、特定の重要な行にメモを設定してから、次のMarkdownセルでこれらの番号を参照することです。
この注釈の問題はプロットに固有のものではないことに注意してください。たとえば、関数定義のすべての行にどのように注釈を付けますか?定義全体を1つのセルに含める必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加