Хорошо, я пытаюсь построить трехмерный график поверхности matplotlib.
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import itertools as it
import numpy as np
plt.clf()
fig = plt.figure(figsize=(6.27, 9.69))
ax = Axes3D(fig)
x = list(range(1,101,11))
y = list(range(1,101,11))
df = pd.DataFrame(columns=y, index=x)
iterator = it.product(x,y)
for i in iterator:
number = np.random.rand()
df.loc[i[0],i[1]] = number
surf = ax.plot_surface(df.index,
df.columns,
df,
cmap='viridis_r',
linewidth=0.5,
alpha = 0.5,
edgecolor = 'k')
ax.set_xlim3d(0,101)
ax.set_ylim3d(0,101)
ax.invert_yaxis()
cb = fig.colorbar(surf, shrink=0.8 , alpha = 0.5)
cb.solids.set_edgecolor("face")
plt.show()
Мой код работает (по моде), но все мои результаты отображаются только на прямой линии, где x=y
, то есть двумерный график.
![enter image description here](https://i.stack.imgur.com/ypO0P.png)
Я думал, что это может быть связано с использованием itertools (код не циклически повторяет все итерации), но с кадром данных все в порядке.
Кто-нибудь может сказать мне, что я делаю неправильно?