Python3 Создание трехмерного графика из словаря (значение: кортеж) - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь создать трехмерный сюжет из словаря и столкнулся с проблемой.Z-доступ будет ключом (MSE), а оси X и Y будут первым и вторым значениями кортежа, например, X будет 2, а Y будет 5 в первом примере примера набора данных ниже:

80178.37739073468: (2, 5),
81623.18006660603: (13, 14),
82583.3021359235: (8, 16),
83491.34222215343: (9, 8),
83724.73005402873: (8, 14),
83856.2891246289: (7, 8),
83984.92825308126: (6, 5),
84314.30519882984: (13, 16),
84577.4110193269: (4, 11),
86338.86146117302: (6, 20)

Я нашел пример кода, чтобы сделать это со списком, но это только для двумерного графика.

1 Ответ

0 голосов
/ 21 мая 2018

Если я правильно понимаю, вы можете сделать следующее.

Предполагая, что ваш словарь выглядит так:

mydict = {80178.37739073468: (2, 5),
81623.18006660603: (13, 14),
82583.3021359235: (8, 16),
83491.34222215343: (9, 8),
83724.73005402873: (8, 14),
83856.2891246289: (7, 8),
83984.92825308126: (6, 5),
84314.30519882984: (13, 16),
84577.4110193269: (4, 11),
86338.86146117302: (6, 20)}

Вот код для построения:

from mpl_toolkits.mplot3d import Axes3D
# Get your x, y and z variables
z = list(mydict.keys())
# unpack the dictionary values into two variables, x and y
x,y = zip(*mydict.values())
# plot
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.scatter(x, y, z)

enter image description here

Полезная документация: Оси matplotlib's3d

...