На самом деле у меня нет никакого sqrt в моем коде. Я просто скопировал второй код (с моей цветной линией) в мой первый код (трехмерный график диска) и в конце добавил свой код. Я думаю, что что-то пошло не так при импорте, потому что перед сообщением об ошибке есть пара сообщений, которые выглядят так: Файл "C: \ Users \ xxx \ Anaconda3 \ lib \ site-packages \ matplotlib \ collection.py", строка 902. , в set_sizes scale = np.sqrt (self._sizes) * dpi / 72.0 * self._factor

я есть 3D-график диска, вот код:

ri = 100
ra = 300
h=20

# input xy coordinates
xy = np.array([[ri,0],[ra,0],[ra,h],[ri,h],[ri,0]])
# radial component is x values of input
r = xy[:,0]
# angular component is one revolution of 30 steps
phi = np.linspace(0, 2*np.pi, 50)
# create grid
R,Phi = np.meshgrid(r,phi)
# transform to cartesian coordinates
X = R*np.cos(Phi)
Y = R*np.sin(Phi)
# Z values are y values, repeated 30 times
Z = np.tile(xy[:,1],len(Y)).reshape(Y.shape)


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

ax.set_zlim(0,200)
ax.plot_surface(X, Y, Z, alpha=0.5, color='grey', rstride=1, cstride=1)

Я получаю этот хороший сюжет:

Далее у меня есть этот сюжет:

Код является:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl

arr = np.array([[100, 15],
               [114.28, 17],
               [128.57, 18],
               [142.85, 19],
               [157.13, 22],
               [171.13, 24],
               [185.69, 25],
               [199.97, 27],
               [214.25, 28],
               [228.53, 30],
               [242.81, 31],
               [257.09, 35],
               [271.37, 36],
               [288.65, 37],
               [300, 38]])

#interpolating between the single values of the arrays
new_x = np.concatenate([np.linspace(arr[i,0],arr[i+1,0], num=50)
                        for i in range(len(arr)-1)])

new_y = np.interp(new_x, arr[:,0], arr[:,1])
t=np.arange(700)
p = plt.scatter(new_x,new_y,c=t, cmap="jet")

#inserting colorbar
cax, _ = mpl.colorbar.make_axes(plt.gca(), shrink=0.8)
cbar = mpl.colorbar.ColorbarBase(cax, cmap='jet', label='testvalues',
                       norm=mpl.colors.Normalize(15, 40))
plt.show()

Теперь мой вопрос: есть ли способ построить этот 2D-график в моей 3D-среде? Кроме того, возможно ли создать поверхность из этой линии (точек), вращая их вокруг средней точки? Я попробовал это так же, как я сделал это с моим диском, но я потерпел неудачу, потому что я думаю, что мне нужен замкнутый контур? Вот картинка, чтобы лучше понять, чего я хочу:

Ответы на вопрос(1)

Ваш ответ на вопрос