Установка другого цвета ниже определенного значения - PullRequest
0 голосов
/ 01 октября 2019

Я новичок в построении 3D-графиков на Python. Я работаю над кодом, в котором мне даны данные корабля, в терминах значений различных разделов. Я успешно смог организовать данные в форме, в которой они дают полный 3D-график корабля. Вот раздел моего кода, который дает трехмерный график.

fig = plt.figure()
ax = plt.axes(projection="3d")
X = np.array(new_list)
Y= np.array(YQ)
Z = np.array(ZQ)
ax.plot_surface(Y, Z, X, rstride=1, cstride=1,cmap='Purples', edgecolor='none')
ax.set_xlim(-80, 80)
ax.set_ylim(-80, 80)
ax.set_xlabel('Y')
ax.set_ylabel('Z')
ax.set_zlabel('X')
plt.show()

Пожалуйста, не обращайте внимания на то, что я назначаю различные переменные обычному порядку оси. Я понимаю, что это немного сбивает с толку, но данные были организованы таким образом, и мне пришлось работать с этим. Теперь я хочу назначить другой цвет части корабля, погруженного в воду. В моем коде переменная Z представляет высоту корабля, поэтому в основном я хочу назначить другой цвет всем значениям, меньшим, чем Z = 0, так как все значения Z, меньшие 0, погружены в воду. Какие изменения я могу внести в мой код для выполнения этой задачи?

1 Ответ

0 голосов
/ 01 октября 2019

Моя идея заключается в том, чтобы сгенерировать np.array для входной переменной facecolors, равной ax.plot_surface(). В качестве примера рассмотрим this .

Так что, так как вы хотите, чтобы все с z-значением ниже 0 в другом цвете, вы можете создать свои цвета лица таким образом:

color_above_0 = [1, 1, 1]
color_below_0 = [0, 0, 0]
f_c = np.array([[color_below_0 if val < 0 else color_above_0 for val in z_row] for z_row in Z])

Это вы можете затем использовать, как описано в предыдущей ссылке, как ввод лицевых цветов.

...