我正在尝试对我的低温传输测量结果进行二维彩色绘图。数据被采集并保存在一系列.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
...
现在,我想绘制2D彩色图,其中V和B为x和y轴,I为z(颜色)。我该如何使用Holoview.Image
来做到这一点?
我知道可以使用季节性热图完成此操作,但我想使用 holoview 进行交互式绘图和其他功能。它也可以与Holoviews.HeatMap
一起使用,但是HeatMap
有一些问题。 HeatMap轴是绝对值而不是数值轴,这使得设置xticks,xlim等变得困难且不直观(例如:Changing ticks mark period in Holoviews heatmap)
Holoviews.Image
更适合我的数据,但它仅接受网格化数据,而不接受像pandas数据框这样的列数据。
简而言之,我想我的问题是如何将pandas dataframe
转换为网格数据以便在Holoviews.Image
元素中进行绘制。
答案 0 :(得分:1)
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,但这没关系)
ds = hv.Dataset(df_xarray,['B', 'V'] , 'I')
ds.to(hv.Image, ['B', 'V'], 'I')