我需要创建分组箱线图,最好使用
gnuplot
,完全如这个答案所示。
但是,我需要一个灰度图。此外,输出必须是封装的 Postscript (EPS) 文件。
添加这两行时
set terminal postscript eps enhanced 24
set output "fruit_prices.eps"
我得到以下图(我将 EPS 文件转换为 PNG 文件,因为 StackOverflow 不接受 EPS 文件):
由于某种原因,所有九个盒子都有不同的线条样式。我需要 A、B 和 C 公司的第一个框具有相同的样式,第二个和第三个框也具有相同的样式(与原始示例中的颜色相匹配)。
如何实现?
终端
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
,我仍然只能得到灰色阴影。