Я хочу построить разные углы обзора трехмерных графиков, каждый из которых имеет один и тот же набор данных, окрашенных по-разному в зависимости от групп.Но следующий подход, по-видимому, отображает только последнюю группу данных вместо сохранения предыдущих групп.
fig = plt.figure()
# group_id is a group-id map, eg {'A': 0, 'B': 1, ...}
for k, v in group_id.items():
# data_id indicates id of each data
subset_idx = data_id == v # obtain idx of data belonging to group k
d = data[subset_idx] # get the data subset
for i, angle in enumerate([45, 90, 135, 180]):
ax = fig.add_subplot(1, 4, i + 1, projection='3d')
ax.view_init(azim=angle)
ax.scatter(d[:, 0], d[:, 1], d[:, 2], c=colors[v], label=k)
В примере встречается предупреждение:
MatplotlibDeprecationWarning:
Adding an axes using the same arguments as a previous axes currently
reuses the earlier instance. In a future version, a new instance will
always be created and returned. Meanwhile, this warning can be
suppressed, and the future behavior ensured, by passing a unique label
to each axes instance.
"Adding an axes using the same arguments as a previous axes "
, которое не должно вызывать каких-либосерьезные проблемы.Тем не менее, кажется, что результат отображает только последнюю группу данных (последний элемент в group_id), предполагая, что ax = fig.add_subplot
, возможно, создал новые оси, которые не соответствуют описанию в предупреждении.Что меня больше смущает, так это то, что точно такой же подход для 2D-сюжета работает (хотя и дает то же предупреждение).