Indexing 是否可以将索引用作直方图中的xtic值?

Indexing 是否可以将索引用作直方图中的xtic值?,indexing,gnuplot,histogram,Indexing,Gnuplot,Histogram,在具有以下结构的数据的文件中: # [year] "Town A" population "Town B" population "Town C" population # [year2] "Town A" population "Town B" population "Town C" population # [year3] "Town A" population "Town B" population "Town C" population 我已使用以下方法创建了直方图: set st

在具有以下结构的数据的文件中:

# [year]
"Town A" population
"Town B" population
"Town C" population

# [year2]
"Town A" population
"Town B" population
"Town C" population

# [year3]
"Town A" population
"Town B" population
"Town C" population
我已使用以下方法创建了直方图:

set style data histogram
set style histogram columnstacked
p 'file.dat' index '[year]' u 2:key(1) ,\
'' index '[year2]' u 2,\
'' index '[year3]' u 2;
以前的设置几乎按照我需要的方式生成图形,但是,我希望能够使用索引名(标记?)作为xtic值,从现在起,xtic值是0、1和2,而不是year、year2和year3。
gnuplot可以使用索引值作为具有这种数据结构的直方图中的XTIC吗?

我在
plot
命令本身中找不到设置此值的方法。这是一个好主意,我将把它作为gnuplot的一个特性请求来推进。我最好的建议是这样,假设您事先知道索引字符串集。 我将它显示为N上的一个迭代,因为我假设您可能真的有3个以上的数字,对于较大的数字,迭代的类型要少得多

N = 3
array INDEX[N] = [ "[year1]", "[year2]", "[year3]" ]
set xtics 1
set for [i=1:N] xtics add (INDEX[i] i-1)

plot 'file.dat' index INDEX[1] u 2:key(1) ,\
     for [i=2:N] '' index INDEX[i] u 2

file.dat中数据块之间需要两行空白:

# [year]
"Town A" 123
"Town B" 543
"Town C" 789


# [year2]
"Town A" 234
"Town B" 666
"Town C" 1000


# [year3]
"Town A" 345
"Town B" 600
"Town C" 800
Gnuplot命令(需要5.2.5或更高版本)

请注意,第2列是指索引值。这并不是什么新鲜事,但5.2.5版现在允许您在strcol()函数中使用它(stringcolumn()的简称)。标题和列间距可以改进。

感谢您的澄清。该功能已在最新版本(gnuplot 5.2.5)中添加,但这对旧版本没有帮助。我编译了5.2.5版,如何使用新功能xtic(某物)键(某物)?它在SVG终端上工作,但在使用pngcairo时不起作用:它在QT终端上工作,但在我将终端设置为pngcairo时不起作用:
set term pngcairo enhanced color transparent background'#FFFFFF'
在[this]()中使用QT终端时产生[this](),这对我来说毫无意义。所有涉及的代码都不依赖于终端输出层。是的,我注意到了。此外,手册中关于索引命名的建议,如您所见,使XLabel看起来很好,很难看,是否必须命名索引[string]或==string==?我不知道。我想这只是一些人根据自己的经验和使用模式提出的建议。
set style data histogram
set style histogram columnstacked
set style fill solid border lc black
plot 'file.dat' index '[year]' u 2:key(1) title strcol(-2),\
     '' index '[year2]' u 2 title strcol(-2),\
     '' index '[year3]' u 2 title strcol(-2)