R:不带Ggaly的平行坐标图

R:不带Ggaly的平行坐标图,r,ggplot2,plot,data-visualization,data-manipulation,R,Ggplot2,Plot,Data Visualization,Data Manipulation,我正在使用R编程语言。我使用的计算机没有USB端口或internet连接-我只有带有几个预加载库的R(例如ggplot2、REGRAPE2、dplyr、base R) 是否可以仅使用“ggplot2”库而不使用“GGALY”绘制“平行坐标”图(如下图) 谢谢 来源:在没有“GGally”的情况下,我发现最接近这一点的是使用“MASS”库的内置函数: #来源:https://stat.ethz.ch/R-manual/R-devel/library/MASS/html/parcoord.html

我正在使用R编程语言。我使用的计算机没有USB端口或internet连接-我只有带有几个预加载库的R(例如ggplot2、REGRAPE2、dplyr、base R)

是否可以仅使用“ggplot2”库而不使用“GGALY”绘制“平行坐标”图(如下图)

谢谢


来源:

在没有“GGally”的情况下,我发现最接近这一点的是使用“MASS”库的内置函数:

#来源:https://stat.ethz.ch/R-manual/R-devel/library/MASS/html/parcoord.html
图书馆(弥撒)
parcoord(state.x77[,c(7,4,6,2,5,3)])

事实上,您甚至不需要
ggplot
!这只是一个标准化值的绘图(减去平均值除以SD),因此您可以使用任何绘图功能实现此逻辑。最干净、最简单的方法是在base R中的步骤中:

#标准化感兴趣的变量
数据(螃蟹,包装=“质量”)

crabs[,4:8]在我看来就像是一条
geom_线
,你尝试过什么?现在,我正试图找到一种格式化数据的方法,这样我就可以使用geom_线。我认为plotly库也可以:看看在
geom_线()
之前有几个步骤,例如缩放数据和插补缺失值。应该可以复制,但这需要一点努力。@Noob复制/粘贴源代码将是我尝试的第一件事。在某个时候,您需要将数据转换为长格式—看起来像是
ggparcoord
使用
restrape::melt
来实现这一点。不确定是否有可用的软件包-如果没有,请在上查找其他选项。如果有可用的MASS软件包,请参阅spasiba!这个答案太完美了!我有一个问题与你的答案有关-我应该在一个新的问题中发布它吗?你能看看这个相关的问题吗?感谢you@Noob好了,非常感谢你的帮助!一切都那么优雅美丽!我在这里研究这个问题:也许你会有一些想法?
#load libraries (I do not have GGally)
library(GGally)

#load data (I have MASS)
data(crabs, package = "MASS")

#make 2 different parallel coordinate plots
ggparcoord(crabs)
ggparcoord(crabs, columns = 4:8, groupColumn = "sex")
#source: https://stat.ethz.ch/R-manual/R-devel/library/MASS/html/parcoord.html
library(MASS)
parcoord(state.x77[, c(7, 4, 6, 2, 5, 3)])

ir <- rbind(iris3[,,1], iris3[,,2], iris3[,,3])
parcoord(log(ir)[, c(3, 4, 2, 1)], col = 1 + (0:149)%/%50)
# Standardising the variables of interest
data(crabs, package = "MASS")
crabs[, 4:8] <- apply(crabs[, 4:8], 2, scale)
# This colour solution works in great generality, although RColorBrewer has better distinct schemes
mycolours <- rainbow(length(unique(crabs$sex)), end = 0.6)
# png("gally.png", 500, 400, type = "cairo", pointsize = 14)
par(mar = c(4, 4, 0.5, 0.75))
plot(NULL, NULL, xlim = c(1, 5), ylim = range(crabs[, 4:8]) + c(-0.2, 0.2),
     bty = "n", xaxt = "n", xlab = "Variable", ylab = "Standardised value")
axis(1, 1:5, labels = colnames(crabs)[4:8])
abline(v = 1:5, col = "#00000033", lwd = 2)
abline(h = seq(-2.5, 2.5, 0.5), col = "#00000022", lty = 2)
for (i in 1:nrow(crabs)) lines(as.numeric(crabs[i, 4:8]), col = mycolours[as.numeric(crabs$sex[i])])
legend("topright", c("Female", "Male"), lwd = 2, col = mycolours, bty = "n")
# dev.off()