0

我正在尝试在 R 中构建一个平行坐标图,以显示不同年龄段的排名差异。我想在 Y 轴上有一个固定的比例来显示这些值。

这是一个PC图: 在此处输入图像描述

目标是非常清楚地看到线条的斜率。因此,如果我的值 1 与值 1000 绑定,我希望看到这条线一直急剧下降。

到目前为止,在 R 中,如果我的值太大,我的情节就会被压扁,所以一切都合适,很难想象任何东西。

到目前为止,我绘制平行坐标图的代码如下:

pc_18_34 <- read.table("parCoordData_18_24_25_34.csv", header=FALSE, sep="\t")
#name columns of data frame
colnames(pc_18_34) = c("18-25","25-34")

#build the parallel coordinate plot
# doc : http://docs.ggplot2.org/current/geom_path.html
group <- rep(c("Top 10", "Top 10-29", "Top 30-49"), each = 18)
df <- data.frame(id = seq_along(group), group, pc_18_34[,1], pc_18_34[,2])
colnames(df)[3] = "18-25"
colnames(df)[4] = "25-34"
library(reshape2) # for melt

dfm <- melt(df, id.var = c("id", "group"))
dfm[order(dfm$group,dfm$ArtistRank,decreasing=TRUE),]
colnames(dfm)[3] = "AgeGroup"
colnames(dfm)[4] = "ArtistRank"

ggplot(dfm, aes(x=AgeGroup, y=ArtistRank, group = id, colour = group), main="Tops across age groups")+  geom_path(alpha = 0.5, size=1) + geom_path(aes(color=group))

我已经研究了如何使用像 scales 这样的库来改变 ggplot 中的比例,但是当我有一层比例时,图表甚至不再显示了。

关于如何使用固定比例的任何想法(比如在图中显示为 5px 的等级差异 1),即使这意味着情节非常高

谢谢!!:)

4

1 回答 1

2

您可以根据轴中断的数量将面板高度设置为绝对大小。请注意,该设备不会自动缩放,因此您必须手动调整它以使您的绘图适合。

library(ggplot2)
library(gtable)

p <- ggplot(Loblolly, aes(height, factor(age))) +
  geom_point()

gb <- ggplot_build(p)
gt <- ggplot_gtable(gb)
n <- length(gb$panel$ranges[[1]]$y.major_source)

# locate the panel in the gtable layout
panel <- gt$layout$t[grepl("panel", gt$layout$name)]
# assign new height to the panels, based on the number of breaks
gt$heights[panel] <- list(unit(n*25,"pt"))
grid.newpage()
grid.draw(gt)
于 2014-05-28T10:55:10.767 回答