相关疑难解决方法(0)

如何绘制相交的平面?

我想使用matplotlib或多或少地绘制我下面附着的图形,其中包括两个相交的平面,其中正确的透明度表示它们的相对方向,以及两个平面中的圆和矢量以2D投影.

我不确定是否有现成的包,这样做,任何提示?图片来源:M Strassler

python matplotlib

21
推荐指数
2
解决办法
8393
查看次数

使用python,numpy和matplotlib绘制蒙面曲面图

我正在使用matplotlib 1.1.0绘制表面.

绘图Z轴被掩盖如下:

Zm = ma.masked_where((abs(z_grid) < 1.09) & (abs(z_grid) > 0.91), (z_surface))
surf = ax.plot_surface(X, Y,Zm, rstride=2, cstride=2, cmap=colors,linewidth=0, antialiased=False)
Run Code Online (Sandbox Code Playgroud)

但我没有看到在情节上应用的面具.我将面具本身绘制为子图

surf = ax.plot_surface(X, Y,ma.getmask(Zm), rstride=2, cstride=2, cmap=colors,linewidth=0, antialiased=False)
Run Code Online (Sandbox Code Playgroud)

哪个有效,所以我知道我的面具实际上包含真值.

完整代码:

from pylab import *
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
import numpy
from mpl_toolkits.mplot3d.axes3d import Axes3D
from  matplotlib import patches
from matplotlib.figure import Figure
from matplotlib import rcParams


fig = plt.figure(figsize=plt.figaspect(0.5))
ax = fig.add_subplot(1, 2, 1,projection='3d')

pole_positions_orig = [-0.6+0.73j];
zero_positions_orig = [0.29-0.41j];

surface_limit = 1.7;
min_val …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib

8
推荐指数
2
解决办法
6014
查看次数

如何使3d matlibplot不显示蒙版值

该图应仅显示屏蔽值.就像在右侧的(操纵)图中一样.

默认显示所有值.在2d图表中没有问题.

它是否也可以在3d图表中?如果是,怎么样?

在此输入图像描述

import matplotlib.pyplot as plt
import numpy as np

Z = np.array([
    [ 1, 1, 1, 1, 1, ],
    [ 1, 1, 1, 1, 1, ],
    [ 1, 1, 1, 1, 1, ],
    [ 1, 1, 1, 1, 1, ],
    [ 1, 1, 1, 1, 1, ],
    ])

x, y = Z.shape

xs = np.arange(x)
ys = np.arange(y)
X, Y = np.meshgrid(xs, ys)

M = np.ma.fromfunction(lambda i, j: i > j, (x, y))
R = np.ma.masked_where(M, Z)

fig …
Run Code Online (Sandbox Code Playgroud)

matplotlib

5
推荐指数
1
解决办法
1299
查看次数

如何使用pyplot在曲面图后面画一条线

我想在我用曲面图绘制的圆环内画一条线。该线不应该在环面内可见 - 就像环面的内侧一样,只能在环面的“末端”看到(我切断了环面的一半)。然而,我绘制的线随处可见(如您在图中所见)。

在此处输入图片说明

我使用了以下代码:

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

# theta: poloidal angle | phi: toroidal angle
# note: only plot half a torus, thus phi=0...pi
theta = np.linspace(0, 2.*np.pi, 200)
phi   = np.linspace(0, 1.*np.pi, 200)
theta, phi = np.meshgrid(theta, phi)

# major and minor radius
R0, a = 3., 1.

# torus parametrization
x_torus = (R0 + a*np.cos(theta)) * np.cos(phi)
y_torus = (R0 + a*np.cos(theta)) * np.sin(phi)
z_torus = a * np.sin(theta) …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

5
推荐指数
1
解决办法
185
查看次数

matplotlib无法正确显示3D平面的交集

我想绘制两个平面并找到它们的交叉线,但是我得到了这个结果,因为一个平面覆盖了另一个平面,所以无法分辨它们相交的位置.

3D投影应隐藏平面的不可见部分,如何使用matplotlib获得此结果?

飞机

你可以清楚地看到这些平原应该相交.

平面相交

这是我用来获得这个结果的代码

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

values = range(-10, 11)

def plotPlane(plot, normal, d, values, colorName):
    # x, y, z
    x, y = np.meshgrid(values, values)
    z = (-normal[0] * x - normal[1] * y - d) * 1. / normal[2]

    # draw plot
    plot.plot_surface(x, y, z, color=colorName)

image = plt.figure().gca(projection='3d')

plotPlane(image, [3, 2, -4], 1, values, "red")
plotPlane(image, [5, -1, 2], 4, values, "gray")

plt.show()
Run Code Online (Sandbox Code Playgroud)

python 3d matplotlib

2
推荐指数
2
解决办法
3305
查看次数

标签 统计

matplotlib ×5

python ×4

3d ×1

numpy ×1