Colors Gnuplot在行堆栈直方图中重复颜色

Colors Gnuplot在行堆栈直方图中重复颜色,colors,gnuplot,Colors,Gnuplot,我目前正在使用带有行堆叠直方图的gnuplot绘制一些数据。 问题是,在选择了9种不同的颜色后,颜色开始重复。在官方的gnuplot示例中也可以看到这种情况(参见示例4和5) 有什么方法可以告诉gnuplot使用更多不同的颜色吗?没有完全自动化的方法,但是您可以使用设置样式行…定义任意多的行样式,然后使用它们。在这里,我只是使用一个简单的迭代来定义几种颜色: do for [i=1:20] { set style line i linecolor rgb hsv2rgb(0.05*(i-

我目前正在使用带有行堆叠直方图的gnuplot绘制一些数据。 问题是,在选择了9种不同的颜色后,颜色开始重复。在官方的gnuplot示例中也可以看到这种情况(参见示例4和5)


有什么方法可以告诉gnuplot使用更多不同的颜色吗?

没有完全自动化的方法,但是您可以使用
设置样式行…
定义任意多的行样式,然后使用它们。在这里,我只是使用一个简单的迭代来定义几种颜色:

do for [i=1:20] {
    set style line i linecolor rgb hsv2rgb(0.05*(i-1), 1, 1)
}
set style data histograms
set style histogram rowstacked
set style fill solid border -1
set boxwidth 0.75
plot for [i=1:20] 'mydata.dat' u 2 ls i t 'ls '.i
数据文件仅包含值

1 0.1
2 0.2
3 0.3
请注意,
hsv2rgb
函数仅从5.0开始定义。对于早期版本,您可以使用以下用户定义函数来获得相同的功能:

rgb2int(r,g,b) = int(255*r)*2**16 + int(255*g)*2**8 + int(255*b)
hsv2rgb(h,s,v) = (s == 0 ? rgb2int(v,v,v) : (HSV_h = h*6.0, HSV_i = int(floor(HSV_h)), HSV_f = HSV_h - HSV_i, HSV_p = v*(1.0 - s), HSV_q = v*(1.0-s*HSV_f), HSV_t = v*(1.0-s*(1.0-HSV_f)), (HSV_i%6 == 0 ? rgb2int(v,HSV_t,HSV_p) : (HSV_i%6 == 1 ? rgb2int(HSV_q,v,HSV_p) : (HSV_i%6 == 2 ? rgb2int(HSV_p,v,HSV_t) : (HSV_i%6 == 3 ? rgb2int(HSV_p,HSV_q,v) : (HSV_i%6 == 4 ? rgb2int(HSV_t,HSV_p,v) : rgb2int(v,HSV_p,HSV_q))))))))
为了简化操作,您可以将此代码放入配置文件或第三个脚本
hsv2rgb.gp
中,并在使用函数之前将其包含在
load'hsv2rgb.gp'

4.6.3的输出为:


有些东西比克里斯托夫的答案更自动化。您可以使用调色板:

set palette rgb 7,5,15
unset colorbox
plot 'immigration.dat' using 2:xtic(1) title columnheader(2), \
     for [i=3:22] '' using i lt palette frac i/22. title columnheader(i)
诀窍是,根据循环计数器
i
定义
frac
。确保使用
浮点值(
22.
以匹配示例)进行偏差,以获得调色板的正确分数。
或者,例如4:

plot 'immigration.dat' using (100.*$2/$24):xtic(1) t column(2), \       
     for [i=3:23] '' using (100.*column(i)/column(24)) lt palette frac i/23.\
     title column(i)  

现在,您只需决定合适的调色板。

hsv2rgb抛出未定义的函数错误,我无法应用解决此问题的修补程序。您能否显示不带hsv2rgb的代码版本?我使用的是Gnuplot版本4.6 patchlevel 3。@Jey Ups没有注意到
hsv2rgb
仅在5.0中可用。请参阅我的更新,了解(希望)具有相同功能的用户定义函数。谢谢。我尝试了一个普通的直方图样式“集合样式数据直方图”的解决方案,但我没有得到我所期望的结果。我知道OP的问题是关于争吵。此解决方案是否仅适用于行堆叠直方图?我的数据文件中只有两列。原则上,着色应该适用于任何类型的图表。我的例子有点特别:我使用一个只有两列的数据文件,而不是一个有二十列的数据文件,但第二列继续使用二十次。我包含了通过上述解决方案获得的输出。如果在你的情况下它不起作用,你可能会问一个新问题,并提供代码和数据。我也愿意使用直方图来解决问题。我最初尝试了你的解决方案,失败后,我切换到“盒子”,但仍然没有达到效果。