尝试使用以下方法绘制三维图:

x轴-值(浮点)
y轴-值(浮点)
z轴-类别(字符串)

现在我尝试使用pandas.factorize(table.zcolumn)转换z vector

Output: (array([ 0,  0,  0, ..., -1, -1,  1]), Index([u'London', u'National'], dtype='object'))

这样我就可以画出数字了。

您会看到有NaN值转换为-1,所以当我绘制图形时,在-1处有一堆值。数据包含伦敦,国家和NaN类别。

如何标记轴以适合我的数据?我觉得应该有一个简单的功能来匹配它。

在z轴上,我需要重新将打勾-1分配为“NA”,将0分配为“London”,将1分配为“National”

我也会对使用大量类别的方法感兴趣,因此不需要手动输入每个类别字符串的代码
regions = pandas.factorize(dataTable.Region[id_range])
regions_num = regions[0]

fig = plot.figure()
ax = fig.add_subplot(111,projection='3d')
ax.scatter(y, x, zs=regions_num)

ax.axes.set_zticklabels(["London","National","N/A"])

plot.show()

最佳答案

您只需要将zticks设置为与类别相对应的三个z值即可:

ax.axes.set_zticks(regions_num)

话虽如此,但我实际上并不是绘制数据的一种很好的方法。当您的X,Y和Z值都是连续变量时,3D图最有用。如果“region”是一个序数变量,则将区域表示为不同的z级别可能会更有意义,但是是否有任何理由使'N/A'应该比'National'“更高”? 3D图通常也比2D图更难读-例如,由于透视投影,在'National'类别中的一个附近的点看起来很像在'N/A'类别中的一个较远的点。

一个更合适的选择可能是将这些数据表示为2D轴上的散点图,并用不同的颜色表示不同的类别。

关于python-2.7 - 具有分类轴的3D图[Python/Matplotlib],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24509503/

10-08 22:39