Построение значений x и y с результатом в виде карты цветов / тепла - PullRequest
0 голосов
/ 29 августа 2018

В основном у меня есть некоторые значения х и у. Каждый набор значений x и y имеет заданное значение, соответствующее им. Я не уверен, что общая seaborn тепловая карта будет достаточной, если вы хотите сделать это (я могу ошибаться), и что делать?

Мне бы хотелось, чтобы это выглядело примерно так (включая мусорные ведра, чтобы это была более "гладкая" цветная поверхность, а не просто множество разноцветных точек вокруг):

enter image description here

EDIT: Поэтому я постараюсь объяснить лучше.

Допустим, у меня есть что-то вроде этого:

import numpy as np 

nx = 3
ny = 5

x = np.linspace(0.1, 1, nx) 
y = np.linspace(1, 11, ny) 

x_bc = x[:, np.newaxis]
y_bc = y[np.newaxis, :]
z = x_bc * y_bc

Выход z - это каждая комбинация x и y, т.е.: * 10101 *

[[  0.1     0.35    0.6     0.85    1.1  ]
[  0.55    1.925   3.3     4.675   6.05 ]
[  1.      3.5     6.      8.5    11.   ]]

Так что в этом случае у меня есть 3x5 z -значения, т. Е. Какими должны быть цвета на графике, и эти значения взяты из двух списков (x и y), которые имеют длину 3 и 5 соответственно. Это довольно много, что я хотел бы построить.

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

Я бы предложил использовать matplotlib . Если ваши координаты x, y определены по равномерной сетке, то contourf должно сработать; в противном случае tricontourf выполнит триангуляцию и интерполирует данные для вас. Взгляните на этот пример:

enter image description here

0 голосов
/ 29 августа 2018

Эти линии выглядят как контуры. Чтобы нарисовать их и заполнить цвета между ними, вы можете использовать contourf.

Чтобы выполнить эту работу, мне пришлось транспонировать z, чтобы количество столбцов соответствовало размеру x, а количество строк соответствовало размеру y.

nx = 3
ny = 5

x = np.linspace(0.1, 1, nx) 
y = np.linspace(1, 11, ny) 

x_bc = x[:, np.newaxis]
y_bc = y[np.newaxis, :]
z = x_bc * y_bc

plt.contourf(x, y, z.T)
plt.colorbar()

enter image description here

0 голосов
/ 29 августа 2018

Это похоже на то, что вы можете осуществить с помощью kdeplot , начиная с этого:

 ax = sns.kdeplot(x, y, shade=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...