You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用gnuplot生成灰度分组箱线图并输出EPS格式?

解决Gnuplot EPS灰度分组箱线图线条样式统一问题

问题出在EPS终端默认会自动循环分配不同的线条样式,导致每个箱线的样式都不一样。要实现同类型(如所有公司的第一个箱线)样式统一,需要手动预定义灰度线条样式,并在绘制时为对应分组指定样式,具体步骤如下:

1. 配置EPS终端与自定义灰度线条样式

首先设置EPS终端,并定义对应每个分组的灰度线条样式(比如3个样式对应3类箱线),可通过灰度值或RGB灰度码设置,同时可搭配线条宽度、虚线样式增强区分度:

# 设置EPS终端,指定字号并强制灰度渲染
set terminal postscript eps enhanced 24 monochrome
set output "fruit_prices.eps"

# 定义3种自定义灰度线条样式,对应3类箱线
set style line 1 lc gray 0.0 lw 2 dt solid   # 黑色粗实线,对应第一类箱线
set style line 2 lc gray 0.4 lw 2 dt 1      # 深灰色短虚线,对应第二类箱线
set style line 3 lc gray 0.7 lw 2 dt 2      # 浅灰色长虚线,对应第三类箱线

说明:lc gray后接0.0(纯黑)到1.0(纯白)的数值,lw设置线条宽度,dt指定虚线类型(solid为实线,1/2为不同虚线样式)。

2. 绘制时指定对应线条样式

参考原示例的分组逻辑,在绘制每个公司的箱线图时,为同一类箱线指定相同的预定义样式。假设你的数据文件为dataA.txt、dataB.txt、dataC.txt,每列对应一类箱线,可通过以下两种方式实现:

方式1:手动指定每个系列的样式

# 公司A的3类箱线,分别对应样式1、2、3,x轴偏移-0.2
plot 'dataA.txt' using (1-0.2):1 with boxplot ls 1 title "公司A-类别1", \
     'dataA.txt' using (2-0.2):2 with boxplot ls 2 title "公司A-类别2", \
     'dataA.txt' using (3-0.2):3 with boxplot ls 3 title "公司A-类别3", \
     # 公司B的3类箱线,x轴无偏移,对应相同样式
     'dataB.txt' using (1):1 with boxplot ls 1 title "公司B-类别1", \
     'dataB.txt' using (2):2 with boxplot ls 2 title "公司B-类别2", \
     'dataB.txt' using (3):3 with boxplot ls 3 title "公司B-类别3", \
     # 公司C的3类箱线,x轴偏移+0.2,对应相同样式
     'dataC.txt' using (1+0.2):1 with boxplot ls 1 title "公司C-类别1", \
     'dataC.txt' using (2+0.2):2 with boxplot ls 2 title "公司C-类别2", \
     'dataC.txt' using (3+0.2):3 with boxplot ls 3 title "公司C-类别3"

方式2:用循环简化代码(更高效)

如果公司和类别数量较多,可通过循环变量绑定样式:

# 定义公司列表与x轴偏移量
companies = "A B C"
x_offsets = [-0.2, 0, 0.2]

# 双层循环:遍历每个公司,再遍历每个类别,指定对应样式
plot for [c=1:words(companies)] for [f=1:3] \
     sprintf("data%s.txt", word(companies, c)) \
     using (f + x_offsets[c]):f with boxplot ls f \
     title sprintf("公司%s-类别%d", word(companies, c), f)

这样所有公司的同一类别箱线都会使用相同的灰度线条样式,和原示例的配色逻辑完全匹配。

内容的提问来源于stack exchange,提问作者THLO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 08:05:25