带间隙的 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))
编辑:要解决分组问题,是的,您可以。我不知道在这种情况下你要着色的变量是什么,请随意交换下面示例中的 colour
和 group
美学。
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))
在地球科学中,我们经常使用平行坐标图,其值标准化为,例如球粒陨石。
绘制 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))
编辑:要解决分组问题,是的,您可以。我不知道在这种情况下你要着色的变量是什么,请随意交换下面示例中的 colour
和 group
美学。
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))