2017-12-11 12 views
0

내 문제는 다음과 같습니다. 코드에서 아래에 표시된 것과 같은 3D 표면 플롯을 얻으려는 테이블이 있지만 x 및 y 단위는 약간의 "재 매핑"이 필요합니다. 즉, [0,1, ...]은 [ "사과", "오렌지"등이되어야합니다.matplotlib 축을 표면 플롯에서 "문자열"변수로 매핑하십시오.

이것은 시각적 인 목적으로 나에게 매우 중요합니다 ("표면"기능을 잃어 버리기 때문에 나는 일종의 차트로 전환 할 수 없습니다).

아래 코드에서 table은 2D 배열의 "SQL like"표현과 출력 값 (거의 모든 matplolib 사례 연구에서 보여짐)을 더한 pandas Dataframe입니다.

#################################################### 
     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() 

답변

1

이 당신을 위해 무엇을 찾고있는 희망

ax.set_yticklabels(["apple",...])`` 

ax.set_xticklabels(["orange",...])`` 

와 y 축에 대한 xtickslabels을 설정할 수 있습니다.

+0

그 트릭을! – Asher11