2

我正在使用 Gnuplot 生成直方图,但如果值超过/低于特定值,我需要用另一种颜色对其中的一些进行着色。例如,如果值 < 10,则将特定直方图着色为绿色。如果值 > 10,值 < 20,则将特定直方图着色为黄色。如果值 > 20,则将直方图着色为红色。

所以我希望图表是这样的:

x 的。 颜色

1. 4. 绿色

2. 15 . 黄色的

3. 40 . 红色的

值(x 和 y)来自数据库,因此我无法告诉 Gnuplot 我想要着色哪些 x 值,因为这些值会不时变化。

我可以用 Gnuplot(和 php)完成这个吗?

谢谢!

4

2 回答 2

6

您可以使用以下 gnuplot 脚本:

set style fill transparent solid 0.5 noborder
set boxwidth 0.95 relative
set palette model RGB defined (0 "green", 1 "yellow", 2 "red")
plot 'path\to\your\file' using 1:2:($2<=10 ? 0 : $2<=20 ? 1 : 2) with boxes palette

我的测试文件的内容是

1 4
2 15
3 40

我得到的结果是

在此处输入图像描述

于 2013-04-04T11:15:44.220 回答
2

鉴于此数据文件:

1 4  green
2 15 yellow
3 40 red

以下行有效:

plot for [color in "green red yellow"] 'test.dat' using 1:(strcol(3) eq color ? $2:NaN):(0.95) with boxes lc rgb color
于 2013-04-04T12:07:05.760 回答