1

我尝试用字符/因子 yaxis 和 R 中 x 的多个值制作一个图。

本质上:下图转了 90 度:

df <- data.frame(A = c(2,3,5,5,2), B = c(1,2,6,6,5))
rownames(df) <- c("02", "07", "08", "12", "99")
matplot(df, pch="x", xaxt = "n")
axis(side=1,at=1:nrow(df), labels = rownames(df))

(我为什么要这样做?因为我不希望我的观众在错误的方向上寻找模式。这显然发生在我的数据中,转动图表似乎有帮助。)

值得注意的是,行名是代码,必须被视为字符/因素

我已经尝试过,但这些都不起作用:

matplot(df, factor(rownames(df)), pch = "x")
matplot(df, as.factor(rownames(df)), pch = "x")
matplot(df, as.character(rownames(df)), pch = "x")

我是否正确怀疑,matplot 无法接受 yaxis 的字符/因子输入?

我也尝试了 ggplot,但我无法为 x 赋予多个值。另外,我更喜欢不单独添加数据的解决方案,因为我的原始数据中的每个观察值至少有 15 个值。

ggplot(df, aes(x=df$A, y=rownames(df))) + geom_point(data = df$B)

也许我在这里错过了一个明显的解决方案?

一些我还不知道的包?

谢谢你!

4

1 回答 1

1

对于 ggplot,您可以为数据集中的每一列绘制一个单独的geom_point图层(即一个用于“A”,一个用于“B”),但是将数据框转换为长格式并使用 ggplot 的美学映射会更简洁:

df$rowname <- rownames(df)
rownames(df) <- NULL

ggplot(melt(df), #convert from wide to long format
        aes(x = rowname, y = value, group = variable, colour = variable)) +
  geom_point(size = 3) +
  xlab("") + ylab("") + theme_classic() +
  coord_flip()

阴谋

于 2017-08-29T08:22:54.147 回答