【问题标题】:Heat map of 4x1000 data in gnuplotgnuplot中4x1000数据的热图
【发布时间】:2019-03-26 14:57:54
【问题描述】:

我有 1000 x 4 的数据,浮点值在 [0, 100] 之间。如何在 gnuplot 中为这些数据创建比较热图?

我已经在 Gnuplot 上尝试了热图示例的演示版。但是,我无法从中找到答案。

数据如下:

以及我想在热图中显示每列(排序)的比较。

例如:

【问题讨论】:

  • 你的数据文件是什么格式的?也许给我们看前几行。
  • @Ethan,感谢您的回复,我已经更新了我的问题。

标签: gnuplot heatmap


【解决方案1】:

据我了解,您希望单独处理列,而不是将整个事物视为矩阵。以下 gnuplot 命令将执行此操作:

unset xtics
unset ytics
unset border
set bmargin screen 0.1
set key samplen -1
set style fill solid
set palette defined (0 "forest-green", 1 "goldenrod")

plot for [col=1:4] 'data' \
     using (col):0:(0.45):(1.0):col with boxxy \
     lc palette title columnhead(col) at first col, graph -0.05

注意事项:

  • boxxy 样式需要列输入 x:y:delta_x:delta_y [:optional 颜色]
  • 我们给它 x 的列号,y 的行号,以及一个恒定大小的宽度和高度。您可以调整宽度以减少列之间的间隙。
  • 增加了底部边距以便为标签留出空间
  • 标题单独放置在情节下方,而不是放在一个关键框中

你提到排序,但不清楚你想要什么。如果想法是在绘图之前对每列中的值进行排序,我认为这必须通过调用系统命令来完成。在 linux 上,这可以通过将 plot 命令的第一行替换为以下内容来完成:

plot for [col=1:4] sprintf("<sort -n -k %d data",col) \
    etc 

【讨论】:

  • 非常感谢。这个答案解决了我所有的问题。正是我想单独处理每一列。此外,数据在绘图之前进行排序。非常感谢。
猜你喜欢
  • 2021-07-06
  • 2015-11-15
  • 2021-08-13
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
相关资源
最近更新 更多