带有分组箱线图的灰度 gnuplot

问题描述 投票:0回答:1

我需要创建分组箱线图,最好使用

gnuplot
,完全如这个答案所示。 但是,我需要一个灰度图。此外,输出必须是封装的 Postscript (EPS) 文件。 添加这两行时

set terminal postscript eps enhanced 24
set output "fruit_prices.eps"

我得到以下图(我将 EPS 文件转换为 PNG 文件,因为 StackOverflow 不接受 EPS 文件):

由于某种原因,所有九个盒子都有不同的线条样式。我需要 A、B 和 C 公司的第一个框具有相同的样式,第二个和第三个框也具有相同的样式(与原始示例中的颜色相匹配)。

如何实现?

gnuplot boxplot eps
1个回答
1
投票

终端

postscript eps
的默认选项是
monochrome
,显然你只能得到一种灰色填充颜色,但虚线不同。

在不了解详细信息的情况下,您显然必须设置选项

color
并明确定义线型,并通过
lt COL
在绘图命令中使用它。

脚本:(数据来自此处

### grouped boxplots
reset session
set terminal postscript eps color enhanced 24
set output "SO77584267.eps"

set linetype 1 lc rgb 0xcccccc dt 1
set linetype 2 lc rgb 0x777777 dt 1
set linetype 3 lc rgb 0x000000 dt 1

FILES     = 'A B C'
File(n)   = sprintf("Company %s.dat",word(FILES,n))
myXtic(n) = sprintf("Company %s",word(FILES,n))

set xlabel "Fruit prices"
set ylabel "Price"
set yrange [0:5]
set grid y

set key noautotitle
set style fill solid 0.3

N    = words(FILES)    # number of files
COLS = 3               # number of columns in file
PosX = 0               # x-position of boxplot

plot for [n=1:N] for [COL=1:COLS] PosX=PosX+1 File(n) u (PosX):COL w boxplot lt COL, \
     for [COL=1:COLS] File(1) u (NaN):COL w boxes lt COL ti columnhead, \
     for [n=1:N] File(1) u ((n-1)*COLS+COLS/2+1):(NaN):xtic(myXtic(n))
set output
### end of script

结果:

我的 GhostView 作为 EPS 查看器无法与最新版本的 GhostScript 一起使用。因此,我将 IrfanView 与 GhostScript 一起使用,但我不确定颜色表示是否正确,例如如果我将颜色设置为

black
0x000000
,我仍然只能得到灰色阴影。

© www.soinside.com 2019 - 2024. All rights reserved.