gnuplot:使用字符组合的热图

迈克尔·奥斯勒

我目前正在分析文本中的两个字符组合,并且想使用gnuplot可视化热图中的频率。我的输入文件采用以下格式(COUNT代表此组合的实际编号)

a a COUNT
a b COUNT
...
z y COUNT
z z COUNT

现在,我想创建一个热图(如该站点上显示第一个热图)。我想在x轴和y轴上显示AZ的字符,即

a
b
...
z
     a b ... z

我对gnuplot相当陌生,因此尝试了plot "input.dat" using 2:1:3 with images,导致出现错误消息“无法使用空的x范围进行绘图”。我幼稚的跑步方法set xrange['a':'z']并没有太大帮助。

关于SO有很多相关问题,但它们要么处理数字x值(例如,在非均匀网格上带有Gnuplot的热图),要么处理不同的输入数据格式(例如gnuplot:矩阵的x和y轴标签(带有行名和列名的热图

所以我的问题是:将输入文件转换成漂亮的gnuplot热图的最简单方法是什么?

安迪拉斯

您需要将字母字符转换为整数。可能可以在gnuplot中以某种方式执行此操作,但这可能很麻烦。

我的解决方案是使用快速的python脚本转换数据文件(假设它称为data.dat):

#!/usr/bin/env python2.7

with open('data.dat', 'r') as i:
    with open('data2.dat', 'w') as o:
        lines = i.readlines()
        for line in lines:
            line = line.split()
            x = str(ord(line[0].lower()) - ord('a'))
            y = str(ord(line[1].lower()) - ord('a'))
            o.write("%s %s %s\n" % (x, y, line[2]))

这需要一个像这样的文件:

a a 1
a b 2
a c 3
b a 4
b b 5
b c 6
c a 7
c b 8
c c 9

并将其转换为:

0 0 1
0 1 2
0 2 3
1 0 4
1 1 5
1 2 6
2 0 7
2 1 8
2 2 9

然后可以在gnuplot中绘制它:

#!/usr/bin/env gnuplot

set terminal pngcairo
set output 'test.png'

set xtics ("a" 0, "b" 1, "c" 2)
set ytics ("a" 0, "b" 1, "c" 2)

set xlabel 'First Character'
set ylabel 'Second Character'

set title 'Character Combination Counts'

plot 'data2.dat' with image

以这种方式手动设置tic有点笨拙,但是效果很好。

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Gnuplot:使用字符串变量定义列

来自分类Dev

非均匀网格上带有Gnuplot的热图

来自分类Dev

使用熊猫TimeSeries创建热图

来自分类Dev

使用MatShow与Matplotlib进行热图

来自分类Dev

Gnuplot热图XYZ

来自分类Dev

gnuplot-从2d点更改为热图

来自分类Dev

gnuplot-从2d点更改为热图

来自分类Dev

gnuplot:如何在热图图中写入z值

来自分类Dev

使用R或Python生成热图

来自分类Dev

用于自组织映射输出的ruby gnuplot热图

来自分类Dev

使用Seaborn FacetGrid绘制相关热图

来自分类Dev

从平方矩阵使用R创建热图

来自分类Dev

绘制多个热图gnuplot

来自分类Dev

使用dplyr排序热图

来自分类Dev

使用spplot绘制的德国热图

来自分类Dev

使用pandas数据框的seaborn热图

来自分类Dev

停止gnuplot内插热图

来自分类Dev

使用Tableau创建热图

来自分类Dev

使用Seaborn扩大热图的大小

来自分类Dev

Gnuplot:使用字符串变量定义列

来自分类Dev

非均匀网格上具有Gnuplot的热图

来自分类Dev

gnuplot:如何在热图图中写入z值

来自分类Dev

用于自组织映射输出的ruby gnuplot热图

来自分类Dev

具有不连续梯度的Gnuplot热图

来自分类Dev

gnuplot-使用字符串变量

来自分类Dev

使用seaborn热图

来自分类Dev

使用 matplotlib 的热图

来自分类Dev

在 Gnuplot 中绘制具有不同 bin 大小的热图

来自分类Dev

如何使用字符串的静态资源作为与组合框 SelectedItem 绑定的 DataTrigger 的值?