5

matplotlib を使用して 3D プロットに複数の線をプロットしようとしています。x と y の値を持つ 6 つのデータセットがあります。これまでに試したことは、データ セットの各ポイントに Z 値を与えることでした。したがって、データ セット 1 のすべてのポイントは z=1 であり、データ セット 2 のすべてのポイントは z=2 であり、以下同様です。次に、それらを 3 つのファイルにエクスポートしました。すべての x 値を含む "X.txt"、すべての y 値を含む "Y.txt"、"Z.txt" と同じです。

これまでのコードは次のとおりです。

        #!/usr/bin/python
        from mpl_toolkits.mplot3d import axes3d
        import matplotlib.pyplot as plt
        import numpy as np
        import pylab

        xdata = '/X.txt'
        ydata = '/Y.txt'
        zdata = '/Z.txt'

        X = np.loadtxt(xdata)
        Y = np.loadtxt(ydata)
        Z = np.loadtxt(zdata)

        fig = plt.figure()
        ax = fig.add_subplot(111, projection='3d')
        ax.plot_wireframe(X,Y,Z)
        plt.show()

私が得るものは、私が必要とするものにかなり近いように見えます。しかし、ワイヤーフレームを使用すると、各データセットの最初のポイントと最後のポイントが接続されます。各データセットの線の色を変更するにはどうすればよいですか? また、データセット間の接続線を削除するにはどうすればよいですか?

ワイヤーフレームよりも優れたプロット スタイルはありますか?

4

1 に答える 1

8

データ セットを個別に読み込み、それぞれを個別にプロットします。

あなたが持っているフォーマットはわかりませんが、このようなものが必要です

from mpl_toolkits.mplot3d.axes3d import Axes3D
import matplotlib.pyplot as plt
fig, ax = plt.subplots(subplot_kw={'projection': '3d'})

datasets = [{"x":[1,2,3], "y":[1,4,9], "z":[0,0,0], "colour": "red"} for _ in range(6)]

for dataset in datasets:
    ax.plot(dataset["x"], dataset["y"], dataset["z"], color=dataset["colour"])

plt.show()

オブジェクトを呼び出すたびにplot(またはplot_wireframe、何が必要なのかわかりません) axes、データが新しいシリーズとして追加されます。color引数を省略するmatplotlibと、それらが自動的に選択されますが、あまりにもスマートではなく、シリーズを追加しすぎると、ループして同じ色を再び使用し始めます。

colornb 私はこれをテストしていません - が正しい引数かどうか思い出せません。確かにそうだけど。

于 2013-10-30T11:19:03.580 に答える