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

如何使用GNUPlot绘制带不同二元标记或颜色的数据文件?

解决方案:按标签区分样式绘制数据

下面提供几种常用工具的实现方法,满足将第一列数值放在Y轴,用第二列的-1/1标签区分颜色或标记的需求:

Python(Matplotlib)

通过筛选不同标签的数据,分别设置绘制样式:

import matplotlib.pyplot as plt
import numpy as np

# 加载数据,拆分Y值和标签
y_vals, labels = np.loadtxt('data.txt', delimiter=',', unpack=True)
# 用数据索引作为X轴(若有自定义X可替换此处)
x_vals = np.arange(len(y_vals))

# 筛选标签为1和-1的数据集
mask_pos = labels == 1
mask_neg = labels == -1

# 分别绘制两种标签的数据,用不同颜色和标记
plt.scatter(x_vals[mask_pos], y_vals[mask_pos], c='cornflowerblue', marker='o', label='标签 1')
plt.scatter(x_vals[mask_neg], y_vals[mask_neg], c='tomato', marker='s', label='标签 -1')

plt.ylabel('第一列数值')
plt.xlabel('数据索引')
plt.legend()
plt.show()

Gnuplot

直接通过条件筛选数据,指定不同绘制样式:

set ylabel "第一列数值"
set xlabel "数据索引"

# 绘制标签为1的数据集(蓝色圆圈标记)
plot 'data.txt' using 0:1:($2 == 1 ? 1 : NaN) with points pt 7 lc rgb "cornflowerblue" title "标签 1", \
     # 绘制标签为-1的数据集(红色方形标记)
     'data.txt' using 0:1:($2 == -1 ? 1 : NaN) with points pt 8 lc rgb "tomato" title "标签 -1"

注:using 0表示以行号作为X轴,若需自定义X可替换为对应列号。

R语言(ggplot2)

利用因子变量区分标签,自动映射样式:

library(ggplot2)

# 读取数据并命名列
data <- read.csv('data.txt', header=FALSE, col.names=c('Y', 'Label'))
# 添加数据索引作为X轴
data$X <- seq(nrow(data))

# 绘制散点图,按标签区分颜色和形状
ggplot(data, aes(x=X, y=Y, color=factor(Label), shape=factor(Label))) +
  geom_point(size=3) +
  labs(y='第一列数值', x='数据索引', color='标签', shape='标签') +
  scale_color_manual(values=c('-1'='tomato', '1'='cornflowerblue')) +
  scale_shape_manual(values=c('-1'=15, '1'=16))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:31:01