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

如何用gnuplot在同一文件中绘制带分类标记的散点图?

创建包含数据的Gnuplot散点图(指令+数据同文件)

没问题,我经常把Gnuplot的绘图指令和数据放在同一个文件里,这样管理起来特别方便,尤其是针对你这种按第三列类别区分点样式的需求。下面直接给你完整的示例文件,你可以直接拿去改数据用:

# 基础绘图设置
set terminal pngcairo enhanced font 'Arial,10' size 800,600
set output 'scatter_plot.png'

# 设置坐标轴标签和标题
set xlabel 'X 坐标'
set ylabel 'Y 坐标'
set title '按类别区分的散点图'

# 设置点样式和颜色映射:用第三列的字符串类别来对应不同样式
# 先定义每个类别的点样式和颜色
set style line 1 pt 7 lc rgb '#e74c3c'   # BDD-LEFT:红色实心圆
set style line 2 pt 5 lc rgb '#3498db'   # BDD-HASH:蓝色空心菱形
set style line 3 pt 9 lc rgb '#2ecc71'   # %BDD-TO-DNF:绿色实心方形
set style line 4 pt 11 lc rgb '#f39c12'  # BDD-FIND-INT-INT:橙色十字
set style line 5 pt 3 lc rgb '#9b59b6'   # BDD-LABEL:紫色叉号

# 启用图例,设置位置
set key right top

# 核心绘图命令:用第三列的字符串匹配样式
plot '-' using 1:2:($3 eq "BDD-LEFT" ? 1 : \
                   $3 eq "BDD-HASH" ? 2 : \
                   $3 eq "%BDD-TO-DNF" ? 3 : \
                   $3 eq "BDD-FIND-INT-INT" ? 4 : 5) \
                   with points linestyle variable title '数据点', \
     '-' using 1:2:($3 eq "BDD-LEFT" ? 1 : \
                   $3 eq "BDD-HASH" ? 2 : \
                   $3 eq "%BDD-TO-DNF" ? 3 : \
                   $3 eq "BDD-FIND-INT-INT" ? 4 : 5) \
                   with labels point offset 1,1 notitle
# 数据开始,每一行是x y 类别
8.203125e-5 0.14285715 "BDD-LEFT"
8.203125e-5 0.14285715 "BDD-HASH"
8.203125e-5 0.095238104 "%BDD-TO-DNF"
8.203125e-5 0.095238104 "BDD-FIND-INT-INT"
8.203125e-5 0.095238104 "BDD-LABEL"
# 第一个数据块结束
e
# 第二个数据块(用于标签,如果你不需要标签可以删掉这部分)
8.203125e-5 0.14285715 "BDD-LEFT"
8.203125e-5 0.14285715 "BDD-HASH"
8.203125e-5 0.095238104 "%BDD-TO-DNF"
8.203125e-5 0.095238104 "BDD-FIND-INT-INT"
8.203125e-5 0.095238104 "BDD-LABEL"
# 第二个数据块结束
e

关键细节说明:

  • 把指令和数据放在同一个文件里的核心是用'-'作为数据源,每个'-'对应一个数据块,用e结束当前数据块。
  • 我用linestyle variable配合三元表达式,把第三列的字符串类别映射到预先定义好的样式(点形状+颜色),这样每个类别都有独特的视觉标识。
  • 如果你不需要给点加标签,可以删掉第二个plot块,只保留第一个带with points的部分。
  • 运行的时候直接在终端输入:gnuplot your_plot_file.gp,就能生成指定的PNG图了。

要是你有更多类别需要添加,只要在set style line里新增样式,然后在三元表达式里加上对应的判断就行,很灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:31:21