1

によって作成されたデータセットがあります。

import random

count = []
for i in range(1, 4):
    for j in range(3, 6):
        for k in range(15,19):
            count.append((i, j, k, random.random()))

、、、のcount対の3Dグラフを作成したいと思います(合計3つのグラフ)。私はここで例を調べました:http://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html#surface-plots、しかしそれらはすべてその場で値を作成しているようです。必要な表面グラフまたはメッシュグラフをプロットするにはどうすればよいですか?ijk

4

1 に答える 1

1

私はダッシュする必要がありますが、これは私があなたのデータをプロットしようとする方法ですcount-vs(i,j)の例-最後の行かそこらのインデックススライスを参照してください。必要に応じて、さらに詳しく調べてください。

>>> from mpl_toolkits.mplot3d import Axes3D
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> import random
>>> 
>>> count = []
>>> for i in range(1, 4):
...     for j in range(3, 6):
...         for k in range(15,19):
...             count.append((i, j, k, random.random()))
...             
...         
...     
... 
>>> data = np.array(count)
>>> fig = plt.figure()
>>> ax = fig.gca(projection='3d')
>>> 
>>> # I think this is the sort of thing you want:
>>> 
>>> ax.plot_trisurf(data[:,0], data[:,1], data[:,3])
/usr/local/lib/python2.7/dist-packages/matplotlib/delaunay/triangulate.py:103: DuplicatePointWarni
ng: Input data contains duplicate x,y points; some values are ignored.
  DuplicatePointWarning,
<mpl_toolkits.mplot3d.art3d.Poly3DCollection object at 0x46e8390>
>>> plt.show()
于 2013-02-20T19:15:41.580 に答える