Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 带分类轴的三维绘图[Python/Matplotlib]_Python 2.7_Numpy_Matplotlib_Pandas - Fatal编程技术网

Python 2.7 带分类轴的三维绘图[Python/Matplotlib]

Python 2.7 带分类轴的三维绘图[Python/Matplotlib],python-2.7,numpy,matplotlib,pandas,Python 2.7,Numpy,Matplotlib,Pandas,尝试使用以下内容绘制三维图形: x轴-值(浮动) y轴-值(浮动) z轴-类别(字符串) 现在我尝试使用pandas.factorize(table.zcolumn)转换z向量 这样我就能画出数字了,没问题 您将看到有NaN值转换为-1,因此当我绘制图形时,有一组值位于-1。这些数据包括伦敦、国家和南部地区 如何标记轴以适合我的数据?我觉得应该有一个简单的函数来匹配它 在z轴上,我需要重新分配刻度-1为“NA”,0为“伦敦”,1为“国家” 我还对一种处理大量类别的方法感兴趣,这样代码就不需要手动

尝试使用以下内容绘制三维图形:

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

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

这样我就能画出数字了,没问题

您将看到有NaN值转换为-1,因此当我绘制图形时,有一组值位于-1。这些数据包括伦敦、国家和南部地区

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

在z轴上,我需要重新分配刻度-1为“NA”,0为“伦敦”,1为“国家”

我还对一种处理大量类别的方法感兴趣,这样代码就不需要手动输入每个类别字符串

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值都是连续变量时,三维绘图最有用。如果“region”是一个顺序变量,那么将区域表示为不同的z级可能更有意义,但是有什么原因使得
'N/a'
应该比
'National'
更高?3D绘图通常也比2D绘图更难阅读-例如,由于透视投影,在
'National'
类别中靠近的一个点可能看起来很像更远但在
'N/a'
类别中的一个点


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

这很有效。我完全明白你在第二点的意思。但我主要是把它作为一个编码练习。不知怎的,我没能把标签设为字符串?我可以不使用ax.axes.set_zticklabels(区域[1][:])来设置每个刻度标签吗?它把所有的东西都打印在一起minute@darkace那么,什么是
区域[1][:]
ax.axes.set_zticks(regions_num)