我正在尝试制作低温传输测量的二维彩色图。数据被获取并保存在一系列 .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个文件。我导入了所有文件并将它们连接到一个 pandas 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 轴,I 作为 z(颜色)。如何使用 Holoview.Image
做到这一点?
我知道可以使用seaborn 热图来完成,但我想使用holoview来实现交互式绘图和其他功能。它也适用于 Holoviews.HeatMap
,但 HeatMap
有一些问题。 HeatMap 轴是分类的而不是数字的,这使得设置 xticks、xlim 等变得困难且不直观(例如: Changing ticks mark period in Holoviews heatmap )
Holoviews.Image
更适合我的数据,但它只接受网格数据,而不接受像 pandas dataframe 这样的柱状数据。
我想,简而言之,我的问题是如何将 pandas dataframe
转换为网格数据,以便在 Holoviews.Image
元素中绘制。
最佳答案
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,但这并不重要)
- 使用 df.set_index() 将用于 x 轴和 y 轴的列设置为索引。
- 使用 df.to_xarray() 将 pandas 数据帧转换为 xarray。
- 使用 xarray 绘制或创建 Holoviews 数据集:
ds = hv.Dataset(df_xarray,['B', 'V'] , 'I')
ds.to(hv.Image, ['B', 'V'], 'I')
关于python - 使用 Pandas 数据框绘制 Holoviews.Image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55962945/