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

使用EMcluster包plotmd绘制带标签色平行坐标图,缺失图例求助

我懂你这个痛点——EMcluster里的plotmd画平行坐标图时确实没自带图例功能,没法直接对应颜色和label的关系,这确实挺闹心的。下面给你几个实用的解决办法,从补加图例到换用更顺手的工具都有:

方法1:给plotmd的图手动补加图例

因为plotmd是基于R基础绘图系统的,所以我们可以用基础绘图的legend()函数手动添加图例,关键是先搞清楚plotmd的颜色分配逻辑:

首先先构造你的数据集并绘图:

# 构造数据集
hr_data <- data.frame(
  HR_1 = c(0.1, 0.04, 1.1),
  HR_2 = c(0.05, 0.15, 2.05),
  HR_3 = c(1.5, 1.0, 2.5),
  HR_4 = c(1.6, 1.6, 1.6),
  label = c(1, 1, 0)
)

library(EMcluster)

# 提取特征列和label
features <- hr_data[, paste0("HR_", 1:4)]
labels <- hr_data$label

# 先绘制平行坐标图
plotmd(features, class = labels, type = "coord")

# 确定颜色映射:plotmd默认用palette()里的颜色,按label的类别分配
unique_labels <- unique(labels)
# 获取每个label对应的颜色索引
color_idx <- as.integer(factor(labels))
# 提取用到的颜色
used_colors <- palette()[unique(color_idx)]

# 添加图例,位置可以自己调整(比如topright、bottomleft等)
legend("topright",
       legend = paste("Label", unique_labels),
       col = used_colors,
       lty = 1, # 和plotmd的线条类型保持一致
       cex = 0.8,
       title = "Label Category")

这样就能在图上看到颜色和label的对应关系了。

方法2:换用GGally包的ggparcoord(更省心的ggplot2风格)

如果不想手动折腾图例,GGally包的ggparcoord是专门做平行坐标图的工具,原生支持图例,还能借助ggplot2的语法轻松定制样式:

library(GGally)
library(ggplot2)

ggparcoord(hr_data,
           columns = 1:4, # 指定HR_1到HR_4作为平行坐标轴
           groupColumn = "label", # 按label分组配色
           showPoints = TRUE, # 可选:显示每个数据点
           scale = "uniminmax") + # 可选:把每个变量缩放到0-1范围,方便对比
  scale_color_discrete(name = "Label") + # 自定义图例标题
  labs(title = "Parallel Coordinates Plot by Label",
       y = "Value", x = "HR Variables") +
  theme_minimal()

这个方法出来的图自带清晰的图例,还能随意调整颜色、线条粗细、主题风格,非常灵活。

方法3:用基础绘图手动绘制(完全自定义)

如果你想完全掌控绘图的每一个细节,可以自己写代码绘制平行坐标图,这样图例也能完全按你的需求来:

# 设置坐标轴位置和变量名
n_vars <- 4
x_pos <- 1:n_vars
var_names <- paste0("HR_", 1:n_vars)

# 初始化绘图区域
plot(NULL, 
     xlim = c(0.5, n_vars + 0.5), 
     ylim = range(hr_data[, 1:4]),
     xlab = "HR Variables", 
     ylab = "Value", 
     main = "Parallel Coordinates Plot")

# 添加垂直参考线
for (x in x_pos) {
  abline(v = x, lty = 2, col = "gray80")
}

# 自定义颜色映射
color_map <- c("0" = "#2E86AB", "1" = "#F24C4C")

# 绘制每条数据线
for (i in 1:nrow(hr_data)) {
  y_vals <- unlist(hr_data[i, 1:4])
  lines(x_pos, y_vals, 
        col = color_map[as.character(hr_data$label[i])],
        lwd = 1.5)
}

# 添加坐标轴标签
axis(1, at = x_pos, labels = var_names)

# 添加图例
legend("topright",
       legend = names(color_map),
       col = unname(color_map),
       lty = 1, lwd = 1.5,
       title = "Label")

这个方法可以让你随心所欲调整颜色、线条样式、参考线等,完全定制你的图表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:27:46