I want to create a 3D scatterplot with different datasets in the same plot and a legend with their labels. The problem I am facing is that I cannot properly add the legend and I get a plot with an empty label as the figure in:
http://tinypic.com/view.php?pic=4jnm83&s=5#.Uqd-05GP-gQ.
More specifically, I get the error:
/usr/lib/pymodules/python2.7/matplotlib/legend.py:610: UserWarning: Legend does not support <mpl_toolkits.mplot3d.art3d.Patch3DCollection object at 0x3bf46d0>
Use proxy artist instead."
Please find below an example demo of what I have tried so far:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import random
import csv
from os import listdir
from os.path import isfile, join
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
handles = []
colors = ['blue', 'red']
X1 = range(0,10)
Y1 = range(0,10)
Z1 = range(0,10)
random.shuffle(X1)
random.shuffle(Y1)
random.shuffle(Z1)
scatter1 = ax.scatter(X1, Y1, Z1, c = colors[0], marker = 'o')
random.shuffle(X1)
random.shuffle(Y1)
random.shuffle(Z1)
scatter2 = ax.scatter(X1, Y1, Z1, c = colors[1], marker = 'v')
ax.set_xlabel('X', fontsize = 10)
ax.set_ylabel('Y', fontsize = 10)
ax.set_zlabel('Z', fontsize = 10)
ax.legend([scatter1, scatter2], ['label1', 'label2'])
plt.show()
I have seen other roughly similar examples but none of them uses the scatter() plot. Apart from a working solution, can someone explain what am I doing wrong?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…