将数字 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",...])`` 

希望这就是您要找的。