python - 使用 Pandas 数据框绘制 Holoviews.Image

标签 python plotly bokeh holoviews

我正在尝试制作低温传输测量的二维彩色图。数据被获取并保存在一系列 .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,但这并不重要)

  1. 使用 df.set_index() 将用于 x 轴和 y 轴的列设置为索引。
  2. 使用 df.to_xarray() 将 pandas 数据帧转换为 xarray。
  3. 使用 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/

相关文章:

python - 使用日志打印 pprint 的输出

python - 有没有办法在 kwargs 中转义关键字

python - 如何创建每个点使用一种颜色的散点图(绘图)

python - 在 python 2.7 中为plotly和matplotlib创建环境

python - tkinter 中的组合框字体大小

python - 如何在开放式简历中与BGR图像像素值进行比较?

python - Plotly 表达条形图颜色变化

python - 如何定位 Bokeh 小部件?

Python:如何更新 Bokeh 补丁字段?

python - 如何使用 datashader 为图表的节点着色?