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

带有Pyplot的平滑表面图

缑泓
2023-03-14
问题内容

我的问题几乎与此类似: 从矩阵平滑表面图

只是我的工具集是matplotlib和numpy(到目前为止)。

我已经成功生成了X,Y和Z网格以进行绘制

fig = plt.figure(figsize=(12,12))
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, cmap='summer', rstride=1, cstride=1, alpa=None)

但是,由于这些值非常跳跃,因此看起来非常糟糕。 Exampleplot-
十分前卫,丑陋...无法使用且无法使用

我想使事情变得平滑,至少使顶点连接或看起来像那样。

我的数据是这样生成的:我有一个函数

svOfMatrix(x, y)

它根据x生成矩阵,计算其y次幂,选择列和行的子集,并计算最大奇异值。因此,Z [x,y]是svOfMatrix(x,y)

由于此计算非常昂贵,因此我不想使x的步长太小,而Y必然要是整数。
此外,即使步长很小,也可能会有很多变化,我不想看到。所以我想以某种方式插值。我找到了
http://docs.scipy.org/doc/scipy-0.14.0/reference/tutorial/interpolate.html
但是我没有用。


问题答案:

通过您建议的链接,此处的示例可能最接近您想要的示例。您可以将示例与值一起使用,

import numpy as np
from scipy import interpolate
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d, Axes3D

X, Y = np.mgrid[-1:1:20j, -1:1:20j]
Z = (X+Y) * np.exp(-6.0*(X*X+Y*Y)) + np.random.rand(X.shape[0])

xnew, ynew = np.mgrid[-1:1:80j, -1:1:80j]
tck = interpolate.bisplrep(X, Y, Z, s=0)
znew = interpolate.bisplev(xnew[:,0], ynew[0,:], tck)

fig = plt.figure(figsize=(12,12))
ax = fig.gca(projection='3d')
ax.plot_surface(X, Y, Z, cmap='summer', rstride=1, cstride=1, alpha=None)
plt.show()

fig = plt.figure(figsize=(12,12))
ax = fig.gca(projection='3d')
ax.plot_surface(xnew, ynew, znew, cmap='summer', rstride=1, cstride=1, alpha=None, antialiased=True)
plt.show()

另外,antialiased=True可能会使它看起来更好,但我认为默认情况下处于启用状态。第一个情节看起来像这样,

在此处输入图片说明

和这样的平滑图

在此处输入图片说明

数据中的低频噪声的问题在于,很难定义足够精细以解决问题的网格。您可以使用s参数interpolate.bisplrep或粗粒度/过滤数据来调整平滑程度,以仅保留主要趋势(例如,scipy.ndimage.interpolation.zoom如果您有规则的网格数据,则使用)。或者,考虑使用其他类型的图,例如pcolormesh,因为数据本质上是2D的。



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

  • 有人能解释一下如何在RxJava中通过平面图运算符传递完整信号吗? 如果flatMap操作符被注释,我可以得到从1到10的数字列表,这意味着toList将收到onComplete信号。但当我想在flatMap中进一步处理数据时,它会消耗一个完整的信号,而我无法得到任何结果。如何通过flatMap操作符传递onComplete信号? 我有以下简单的程序:

  • 我已经做了一些研究,我还没有找到一个示例或实现,允许您在滑动时将一个视图(下面的示例图像)放在RecyclerView下面。是否有人有任何例子或想法,如何实现这将不使用库。 下面是我如何实现扫瞄以解除职务。

  • 是否可以在 JavaFX 2.2 中的 ImageView 中渲染缩放后的图像而不应用任何平滑?我正在使用setSmooth(false)将50x50图像渲染为200x200 ImageView,因此源图像中的每个像素都应映射到屏幕上的4x4正方形。 但是,生成的渲染仍然在所有16个目标像素上平滑源像素。有没有人知道一种方法可以做到这一点,而无需手动将每个像素复制到新图像中?

  • 问题内容: 我有一个带有字段的“页面”对象列表。此父字段引用列表中的另一个对象。我想基于此字段从此列表创建树层次结构。 这是我原始列表的样子: 我想将其转换为这样的树结构: 我希望可以在任何时候针对任意列表调用的可重用函数。有人知道解决这个问题的好方法吗?任何帮助或建议,将不胜感激! 问题答案: 小提琴

  • 我有一些问题添加滑块lightbox到滑块,它没有打开弹出窗口。在remove itemSelector img之后,它打开弹出窗口,但是src未定义。有什么提示吗? JS: HTML