2

そのため、エッジがギザギザに見えることを除いて、うまくプロットできる3Dデータがいくつかあります。

関連するコード:

import numpy as np
from matplotlib import cm
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

x = np.arange(-1, 1, 0.01)
y = np.arange(-1, 1, 0.01)
x, y = np.meshgrid(x, y)
rho = np.sqrt(x**2 + y**2)

# Attempts at masking shown here
# My Mask
row=0
while row<np.shape(x)[0]:
    col=0
    while col<np.shape(x)[1]:
        if rho[row][col] > 1:
            rho[row][col] = None
        col=col+1
    row=row+1

# Calculate & Plot
z = rho**2
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(x, y, z, rstride=8, cstride=8,  cmap=cm.bone, alpha=0.15, linewidth=0.25)
plt.show()

プロデュース: ぎざぎざのエッジ これは、エッジがギザギザであることを除いて、私が望むものに非常に近い.

上記のコードでマスクを無効にしてrho = np.ma.masked_where(rho > 1, rho)それを置き換えると、次のようになります。 シングルライナープロット

ギザギザではありませんが、角が欲しいわけではありません。

このギザギザを取り除くためのさまざまなマスキングまたはプロット方法に関する提案はありますか?

4

1 に答える 1

1

極座標の使用を検討しましたか (この例のように) ?

何かのようなもの:

import numpy as np
from matplotlib import cm
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# create supporting points in polar coordinates
r = np.linspace(0,1.25,50)
p = np.linspace(0,2*np.pi,50)
R,P = np.meshgrid(r,p)
# transform them to cartesian system
x, y = R * np.cos(P), R * np.sin(P)

rho = np.sqrt(x**2 + y**2)

# Calculate & Plot
z = rho**2
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(x, y, z, rstride=1, cstride=1,  cmap=cm.bone, alpha=0.15, linewidth=0.25)
plt.show()

ここに画像の説明を入力

于 2013-10-20T23:51:06.397 に答える