Сюжет Holoviews.Image с использованием Pandas dataframe - PullRequest
1 голос
/ 03 мая 2019

Я пытаюсь сделать двухмерную цветную диаграмму моего измерения переноса при низкой температуре.Данные были взяты и сохранены в серии файлов .dat.Данные выглядят примерно так:

B (T), T(K) , V (V), I (A)
0,     4.01, -10.0, 0.001
0,     4.02, -9.9, 0.001
...

Каждый файл был взят в определенном магнитном поле.(От 0 до 2 Telsa с шагом 0,2T) в общей сложности 11 файлов.Я импортировал все файлы и объединил их в одну панду dataframe, которая выглядит следующим образом:

B, T, V, I
0,4.01,-10.0,0.001
0,4.02,-9.9,0.001
...
0.2,4.01,-10.0,0.001
0.2,4.02,-9.9,0.001
...
0.4,4.01,-10.0,0.001
0.4,4.02,-9.9,0.001
...

Теперь я хочу сделать двухмерный цветной график с V и B в качестве осей x и y, и якак z (цвет).Как мне сделать это с Holoview.Image?

Я знаю, что это можно сделать, используя тепловую карту морского происхождения , но я хочу использовать holoview для интерактивного сюжета и другихфункциональные возможности.Он также работает с Holoviews.HeatMap, но HeatMap имеет несколько проблем.Оси HeatMap являются категориальными, а не числовыми, что делает сложным и не интуитивно понятным задание xticks, xlim и т. Д. (Например: Изменение периода отметки тиков в тепловой карте Holoviews )

Holoviews.Imageбольше подходит для моих данных, но он принимает только данные с сеткой, а не столбчатые данные, такие как pandas dataframe.

Полагаю, в двух словах, мой вопрос заключается в том, как преобразовать pandas dataframe в данные с сеткой, чтобы отобразить элемент Holoviews.Image.

1 Ответ

1 голос
/ 03 мая 2019

ahuang11 ответил на GitHub: https://github.com/pyviz/holoviews/issues/3686#issuecomment-488932024

import pandas as pd
import holoviews as hv
import hvplot.xarray

df = pd.DataFrame({
    'B': [0, 1, 2],
    'T': [2, 3, 4],
    'I': [5, 6, 7]
}).set_index(['B', 'T'])
df.to_xarray().hvplot.image('B', 'T', cmap='RdBu_r')

(я хотел нарисовать V как ось x, а не T, но это не имеет значения)

  1. Установите для столбцов, предназначенных для оси x и y, индекс, используя df.set_index ().
  2. Используйте df.to_xarray () для преобразования кадра данных pandas в xarray.
  3. Используйте xarray для построения или создания набора данных holoviews:
ds = hv.Dataset(df_xarray,['B', 'V'] , 'I')
ds.to(hv.Image, ['B', 'V'], 'I')
...