Я хочу добавить текстовые метки на трехмерную диаграмму рассеяния в matplotlib, но она либо вообще не работает, либо сворачивает оси в беспорядок.Я перепробовал все обходные пути, которые смог найти, но, похоже, они не справляются с работой.Вот что я сделал до сих пор.
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import pandas as pd
data = pd.DataFrame({'x_value': [0.58245011499999999,0.58875,0.58571373199999999,0.57505909399999999], 'y_value': [0.575939804, 0.53125, 0.574922673, 0.56629390800000001], 'z_value': [0.37844187799999995,0.14374999999999999, 0.38144978899999998, 0.4012994879999999], 'text_name':['text_1', 'text_2', 'text_3', 'text_4']})
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(data['x_value'], data['y_value'], data['z_value'], c = data.index, cmap = cm.summer, s=60)
points = []
for i in range(len(data)):
points.append((data['x_value'][i], data['y_value'][i],
data['z_value'][i], data['text_name'][i]))
ax.set_xlabel('X_VALUES')
ax.set_ylabel('Y_VALUES')
ax.set_zlabel('Z_VALUES')
ax.view_init(34, 200)
plt.title('MY PLOT')
for i in range(len(points)):
ax.text3D(points[i][0], points[i][1], points[i][2], points[i][3], zdir=
(1, 1, 1))
plt.show()
Результат этого упражнения, однако, нулевой - метки точек не видны:

Однако, когда я добавляю следующие строки выше plt.show()
, я получаю метки, но все перепутано и последующее сообщение об ошибке:
for spine in ax.spines.values():
spine.set_visible(False)
### This loop included to forestall known problem with plt.tight_layout() collapsing axes that nevertheless happens anyway.
plt.tight_layout()

Нижний и верхний поля нельзя сделать достаточно большими, чтобы вместить все украшения топоров
Кто-нибудь может посоветовать, что я делаю неправильно?Спасибо!