将数字 matplotlib 轴映射到曲面图中的 "string" 个变量
Map numeric matplotlib axes into "string" variables in surface plot
我的问题是这样的:我有一个 table,我想从中获得一个 3d 曲面图,例如下面代码中显示的那个,但是 x 和 y 单位上的刻度需要一些 "remapping", 即 [0, 1, ...] 必须变为 ["apple", "orange", 等等].
出于可视化目的,这对我来说非常重要(我无法切换到分类图表,因为我会失去 "surface" 功能)。
在下面的代码中,table
是一个 pandas Dataframe
,它是二维数组的 "SQL like" 表示加上输出值(如几乎所有 matplolib 案例研究所示).
####################################################
position time_digitized value
0 0 0 0.636
1 0 3 0.323
2 0 1 0.783
3 0 2 0.494
4 0 4 0.452
5 0 7 0.212
6 0 5 0.465
7 0 6 0.334
8 0 8 0.182
9 0 11 0.256
10 0 9 0.244
####################################################
from mpl_toolkits.mplot3d.axes3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
fig = plt.figure()
ax = Axes3D(fig)
surf = ax.plot_trisurf(
table.loc[:, 'position'],
table.loc[:, 'time_digitized'],
table.loc[:, 'value'],
cmap=cm.ocean,
linewidth=0.1)
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()
您可以使用
设置 xticks 标签
ax.set_xticklabels(["orange",...])``
对于 y 轴
ax.set_yticklabels(["apple",...])``
希望这就是您要找的。
我的问题是这样的:我有一个 table,我想从中获得一个 3d 曲面图,例如下面代码中显示的那个,但是 x 和 y 单位上的刻度需要一些 "remapping", 即 [0, 1, ...] 必须变为 ["apple", "orange", 等等].
出于可视化目的,这对我来说非常重要(我无法切换到分类图表,因为我会失去 "surface" 功能)。
在下面的代码中,table
是一个 pandas Dataframe
,它是二维数组的 "SQL like" 表示加上输出值(如几乎所有 matplolib 案例研究所示).
####################################################
position time_digitized value
0 0 0 0.636
1 0 3 0.323
2 0 1 0.783
3 0 2 0.494
4 0 4 0.452
5 0 7 0.212
6 0 5 0.465
7 0 6 0.334
8 0 8 0.182
9 0 11 0.256
10 0 9 0.244
####################################################
from mpl_toolkits.mplot3d.axes3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
fig = plt.figure()
ax = Axes3D(fig)
surf = ax.plot_trisurf(
table.loc[:, 'position'],
table.loc[:, 'time_digitized'],
table.loc[:, 'value'],
cmap=cm.ocean,
linewidth=0.1)
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()
您可以使用
设置 xticks 标签ax.set_xticklabels(["orange",...])``
对于 y 轴
ax.set_yticklabels(["apple",...])``
希望这就是您要找的。