Matplotlib散点图图例
我创build了一个4D散点图来表示特定区域的不同温度。 当我创build图例时,图例显示正确的符号和颜色,但添加了一条线。 我使用的代码是:
colors=['b', 'c', 'y', 'm', 'r'] lo = plt.Line2D(range(10), range(10), marker='x', color=colors[0]) ll = plt.Line2D(range(10), range(10), marker='o', color=colors[0]) l = plt.Line2D(range(10), range(10), marker='o',color=colors[1]) a = plt.Line2D(range(10), range(10), marker='o',color=colors[2]) h = plt.Line2D(range(10), range(10), marker='o',color=colors[3]) hh = plt.Line2D(range(10), range(10), marker='o',color=colors[4]) ho = plt.Line2D(range(10), range(10), marker='x', color=colors[4]) plt.legend((lo,ll,l,a, h, hh, ho),('Low Outlier', 'LoLo','Lo', 'Average', 'Hi', 'HiHi', 'High Outlier'),numpoints=1, loc='lower left', ncol=3, fontsize=8)
我试着将Line2D
Scatter
并scatter
。 Scatter
返回一个错误, scatter
改变了graphics,并返回一个错误。
随着scatter
,我将range(10)
改为包含数据点的列表。 每个列表包含x,y或zvariables。
lo = plt.scatter(xLOutlier, yLOutlier, zLOutlier, marker='x', color=colors[0]) ll = plt.scatter(xLoLo, yLoLo, zLoLo, marker='o', color=colors[0]) l = plt.scatter(xLo, yLo, zLo, marker='o',color=colors[1]) a = plt.scatter(xAverage, yAverage, zAverage, marker='o',color=colors[2]) h = plt.scatter(xHi, yHi, zHi, marker='o',color=colors[3]) hh = plt.scatter(xHiHi, yHiHi, zHiHi, marker='o',color=colors[4]) ho = plt.scatter(xHOutlier, yHOutlier, zHOutlier, marker='x', color=colors[4]) plt.legend((lo,ll,l,a, h, hh, ho),('Low Outlier', 'LoLo','Lo', 'Average', 'Hi', 'HiHi', 'High Outlier'),scatterpoints=1, loc='lower left', ncol=3, fontsize=8)
当我运行这个时,传说不再存在,它是一个没有任何东西的angular落里的小白盒子。
任何build议?
2D散点图
使用matplotlib.pyplot
模块的scatter
方法应该可以工作(至less在matlablotlib 1.2.1中使用Python 2.7.5),如下面的代码所示。 此外,如果使用scatterpoints=1
,则在图例调用中使用numpoints=1
而不是numpoints=1
,以便每个图例条目只有一个点。
在下面的代码中,我使用了随机值,而不是一遍又一遍地绘制相同的范围,使所有的图都可见(即不相互重叠)。
import matplotlib.pyplot as plt from numpy.random import random colors = ['b', 'c', 'y', 'm', 'r'] lo = plt.scatter(random(10), random(10), marker='x', color=colors[0]) ll = plt.scatter(random(10), random(10), marker='o', color=colors[0]) l = plt.scatter(random(10), random(10), marker='o', color=colors[1]) a = plt.scatter(random(10), random(10), marker='o', color=colors[2]) h = plt.scatter(random(10), random(10), marker='o', color=colors[3]) hh = plt.scatter(random(10), random(10), marker='o', color=colors[4]) ho = plt.scatter(random(10), random(10), marker='x', color=colors[4]) plt.legend((lo, ll, l, a, h, hh, ho), ('Low Outlier', 'LoLo', 'Lo', 'Average', 'Hi', 'HiHi', 'High Outlier'), scatterpoints=1, loc='lower left', ncol=3, fontsize=8) plt.show()
三维散点图
要在3D中绘制散点图,请使用plot
方法,因为图例不像Axes3D
实例的scatter
方法所返回的那样支持Patch3DCollection
。 要指定标记样式,可以在方法调用中将其作为位置参数来包含,如下面的示例所示。 可选地,可以包括linestyle
和marker
参数的参数。
import matplotlib.pyplot as plt from numpy.random import random from mpl_toolkits.mplot3d import Axes3D colors=['b', 'c', 'y', 'm', 'r'] ax = plt.subplot(111, projection='3d') ax.plot(random(10), random(10), random(10), 'x', color=colors[0], label='Low Outlier') ax.plot(random(10), random(10), random(10), 'o', color=colors[0], label='LoLo') ax.plot(random(10), random(10), random(10), 'o', color=colors[1], label='Lo') ax.plot(random(10), random(10), random(10), 'o', color=colors[2], label='Average') ax.plot(random(10), random(10), random(10), 'o', color=colors[3], label='Hi') ax.plot(random(10), random(10), random(10), 'o', color=colors[4], label='HiHi') ax.plot(random(10), random(10), random(10), 'x', color=colors[4], label='High Outlier') plt.legend(loc='upper left', numpoints=1, ncol=3, fontsize=8, bbox_to_anchor=(0, 0)) plt.show()