当前位置: 首页 > 面试题库 >

如何绘制相交平面?

林俭
2023-03-14
问题内容

我想使用matplotlib或多或少地绘制下面的图形,其中包括两个相交的平面,这些透明平面具有适当的透明度,指示它们的相对方向,以及两个平面中以2D投影的圆和向量。

我不确定是否有用于执行此操作的现有程序包,是否有任何提示?图片来源:M
Strassler


问题答案:
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np


fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

dim = 10

X, Y = np.meshgrid([-dim, dim], [-dim, dim])
Z = np.zeros((2, 2))

angle = .5
X2, Y2 = np.meshgrid([-dim, dim], [0, dim])
Z2 = Y2 * angle
X3, Y3 = np.meshgrid([-dim, dim], [-dim, 0])
Z3 = Y3 * angle

r = 7
M = 1000
th = np.linspace(0, 2 * np.pi, M)

x, y, z = r * np.cos(th),  r * np.sin(th), angle * r * np.sin(th)

ax.plot_surface(X2, Y3, Z3, color='blue', alpha=.5, linewidth=0, zorder=-1)

ax.plot(x[y < 0], y[y < 0], z[y < 0], lw=5, linestyle='--', color='green',
        zorder=0)

ax.plot_surface(X, Y, Z, color='red', alpha=.5, linewidth=0, zorder=1)

ax.plot(r * np.sin(th), r * np.cos(th), np.zeros(M), lw=5, linestyle='--',
        color='k', zorder=2)

ax.plot_surface(X2, Y2, Z2, color='blue', alpha=.5, linewidth=0, zorder=3)

ax.plot(x[y > 0], y[y > 0], z[y > 0], lw=5, linestyle='--', color='green',
        zorder=4)

plt.axis('off')
plt.show()

结果

注意事项:

  • 我正在运行的版本与当前的主版本非常接近,因此我不确定在较旧的版本中将运行什么版本

  • 划分图的原因是,“上方”和“下方”是以某种不可思议的方式确定的(我不完全确定zorder实际执行任何操作),并且实际上取决于艺术家的绘制顺序。曲面不能相交(一个在每个位置都将在另一个上方),因此您需要分别在相交的两侧绘制剖面。(您可以在黑色线中看到这一点,而在上面的蓝色平面的“上方”,我并没有看到它的样子)。

  • 表面的“正确”排序似乎也取决于视角。



 类似资料:
  • 我有一个直方图,每个面元上有4个不同的对象,它们现在相互堆叠在一起。相反,我需要在同一个直方图框中并排绘制不同的对象(类似于https://matplotlib . org/3 . 1 . 1/gallery/statistics/histogram _ multi hist . html中的左上图): ,等在同一个样本内绘制不同标准的对象(和)。我看的所有示例都与我需要的略有不同,找不到正确的方

  • 问题内容: 我正在创建路径,并使用和在每个路径中添加多行。然后绘制所有路径。但是某些路径中的线之间有1-2个像素的间隔。如何删除这些空格?我的代码是这样的: 问题答案: 也许这会创造你想要的 :)

  • 问题内容: 我试过了 但它产生错误: 任何的想法? 问题答案: 好吧,错误消息很清楚:不是实体。如果要映射基本元素的集合,请使用批注(来自Hibernate)或批注(来自JPA 2.0)。 因此,假设您使用的是Hibernate Annotations 3.4,请尝试以下操作: 或者,使用泛型时: 如果您使用的是Hibernate Annotations 3.5+,则更喜欢JPA 2.0注释: 或

  • 我在绘制以下值时遇到一些问题: 我所做的是 但我有一个错误: TypeError:ufunc“add”不包含签名类型与dtype匹配的循环(' 那么我已经试过了 但我还有另外一个错误: TypeError:不可损坏的类型:“列表” 我对频率感兴趣。 我该怎么做才能修好它? 从原始数据集(因为我在复制代码时遇到了一些错误): 输出: 我需要绘制每个单词中值的频率(例如,对于单词1,132和144的频

  • 我必须从普罗米修斯指标创建可视化。我有一个计数器指标,我想显示一天中服务的总请求的摘要。当我们把石墨作为数据源时,我就是这样做的。 我看了一些文档,并尝试使用绘制了带有值的图表。 有人能帮我在普罗米修斯中找到一个等效的函数吗?

  • 问题内容: 我有以下绘制图形的简单脚本: 就目前而言,这条线从一条直线到另一条直线看起来不错,但在我看来可能会更好。我想要的是使两点之间的线变得平滑。在中,我会用绘制。 在PyPlot中有一种简单的方法吗?我找到了一些教程,但是它们看起来都相当复杂。 问题答案: 你可以自己整理数据: scipy 0.19.0中不推荐使用spline,请改用BSpline类。 从切换到复制并不是简单的复制/粘贴操作

  • 问题内容: 我已经使用样条插值法来平滑时间序列,并且还想在绘图中添加一条水平线。但是似乎有一个我无法控制的问题。任何帮助都会非常有帮助。这是我所拥有的: 问题似乎与我对水平线图的使用有关。 问题答案: 您是正确的,我认为这使您失望。您将要重用原始的x轴变量,并使用另一个包含变量的相同长度的numpy数组对其进行绘制。 希望可以解决问题!

  • 我使用样条插值来平滑时间序列,还想在图中添加一条水平线。但是似乎有一个问题超出了我的控制范围。任何帮助都会很有帮助。这是我所拥有的: 问题似乎在于我使用进行水平线绘制。