gpt4 book ai didi

python - 在 python matplotlib 中的 plot_surface 顶部绘制单个 3D 点

转载 作者:太空狗 更新时间:2023-10-30 02:27:08 31 4
gpt4 key购买 nike

我有一些代码可以使用 matplotlib 在 Python 中绘制 3D 表面:

import math 

import numpy as np
import matplotlib.pyplot as plt
from pylab import meshgrid,cm,imshow,contour,clabel,colorbar,axis
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import seaborn as sns
sns.set(style="white")


def surface_map(func, xmin=0, xmax=1, ymin=0, ymax=1, step_size=0.05, maxz=25000):
X, Y = meshgrid(
np.arange(xmin, xmax, step_size),
np.arange(ymin, ymax, step_size))
Z = np.zeros(X.shape)

for i in range(X.shape[0]):
for j in range(X.shape[1]):
Z[i, j] = min(func(X[i, j], Y[i, j]), maxz)

return X, Y, Z


def plot_surface(X, Y, Z, xlabel, ylabel, zlabel, title, point=None, size=25):
fig = plt.figure()
ax = fig.gca(projection='3d')

surf = ax.plot_surface(X, Y, Z,
rstride=1, cstride=1, vmin=0, vmax=20*1000,
cmap=cm.RdBu, linewidth=0, antialiased=True)

ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

ax.set_xlabel(xlabel)
ax.set_ylabel(ylabel)
ax.set_zlabel(zlabel)
ax.set_title(title)

fig.colorbar(surf, shrink=0.5, aspect=5)
if point:
ax.hold(True)
func, fpr, recall = point
ax.scatter([fpr], [recall], [
func(fpr, recall)
], s=size, c='b', marker='.', zorder=10)
plt.show()

然后我这样调用它:

# create mesh 
R, FPR, FuncValue = surface_map(my_function, xmin=0, xmax=1, ymin=0, ymax=1, step_size=0.05, maxz=20*1000)

# plot it
plot_surface(R, FPR, FuncValue,
xlabel="Recall",
ylabel="FPR",
zlabel="Function Value",
title="Recall Settings Payout Function",
point=(my_function, 0.5, 0.5))

我将 ax.scatter 设置为使用较大的标记尺寸和较高的 zorder,但是当绘图被渲染时,表面上没有绘制任何点。

我错过了什么?

最佳答案

您正在寻找的点就在那里,但隐藏在表面“内部”。这是 matplotlib 中的一个常见问题。

我在这里看到两个选项:

  1. 使曲面图半透明,即使用 alpha=.8 或类似的。
  2. 使用plot代替scatter

关于python - 在 python matplotlib 中的 plot_surface 顶部绘制单个 3D 点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41929216/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com