带间隙的 ggparcoord 图

ggparcoord plot with gaps

在地球科学中,我们经常使用平行坐标图,其值标准化为,例如球粒陨石。

绘制 REE 球粒陨石归一化绘图时,您绘制了所有稀土元素(La、Ce、Pr、Nd、Pm、Sm、Eu、Gd、Tb、Dy、Ho、Er、Tm Yb、Lu ).但是,由于 Pm 的半衰期很短,您无法对该元素进行分析。尽管如此,在 REE 球粒陨石图中,您仍然包括 Pm,但没有数据点。这条线仍然贯穿其中。这样您就可以轻松地将您的模式与其他模式进行比较。这是一个例子:First image from a google search

我想制作一个类似的图,但是我不知道如何在我的图中 "skip" Pm 并在数据点中留下一个空隙,但仍然有一条线 运行 通过差距。

这是一个例子:

Sample <- c("sample1", "sample2")
Pr <- c(1,5)
Nd <- c(2,4) 
Pm <- c(NA,NA)
Sm <- c(3,3)
Eu <- c(4,2)

df <- data.frame(Sample, Pr, Nd, Pm, Sm, Eu)

我现在想按以下方式生成平行坐标图:

ggparcoord(df, columns = 2:6, showPoints=TRUE, scale="globalminmax")

但是,由于我的数据框中有 NAs,它不适用于 scale="globalminmax".

关于如何仍然可以生成平行坐标图并将 Pm 保留​​在图中的任何想法?

编辑:

3 个样本分为 2 组的示例:

Sample <- c("sample1", "sample2","sample3")
grouping <- c("gr1","gr2","gr1")
Pr <- c(1,5,1)
Nd <- c(2,4,1) 
Pm <- c(NA,NA,NA)
Sm <- c(3,3,1)
Eu <- c(4,2,1)

df <- data.frame(Sample, grouping, Pr, Nd, Pm, Sm, Eu)

线条和数据点应根据 "grouping" 着色,而线条应仅连接单个样本。

所以这不是使用 ggally,而是使用 ggplot2,但我认为这大致就是我解释你对情节的描述的方式。

# Wide to long format
df2 <- reshape2::melt(df, id.vars = "Sample")
# Omit NAs
df2 <- df2[!is.na(df2$value),]

ggplot(df2, aes(variable, value, colour = Sample, group = Sample)) +
  geom_point() +
  geom_line() +
  # Set limits to keep 'Pm' in axis
  scale_x_discrete(limits = levels(df2$variable))

编辑:要解决分组问题,是的,您可以。我不知道在这种情况下你要着色的变量是什么,请随意交换下面示例中的 colourgroup 美学。

df2 <- reshape2::melt(df, id.vars = c("Sample", "grouping"))
df2 <- df2[!is.na(df2$value),]

ggplot(df2, aes(variable, value, colour = grouping, group = Sample)) +
  geom_point() +
  geom_line() +
  scale_x_discrete(limits = levels(df2$variable))