【问题标题】:How to assign numeric labels to the columns of a matrix in R如何将数字标签分配给R中矩阵的列
【发布时间】:2017-05-10 16:50:53
【问题描述】:

我在一个文件中有一个类似于以下的矩阵。

1 2 3 4 5 6 7 8   9   10  11 12
4 5 5 6 7 8 9 10  11  12  13 3

(此数据仅用于演示。我的实际数据非常大,此处包含。) 我想使用 ggplot2 绘制它的热图。这是我使用的代码:

T=read.table("file")
library(ggplot2)
library(reshape2)

Y=melt(as.matrix(T))

ggplot(Y)+
  geom_tile(aes(x=Var2, y=Var1,fill = value))

问题在于 Var2 具有字母数字值,因此ggplo2 以字典方式对其进行排序。 我如何告诉 R 像给行一样给列提供数字标签? (或者可能有更好的解决方案?)

【问题讨论】:

  • 你应该避免使用T作为变量名,因为它在R中也代表TRUE
  • 我无法复制。当我运行您的示例时,Y$Var2Factor,而不是character,并且它的levels(Y$Var2) 正确排序为[1] "V1" "V2" "V3" 而不是[1] "V1" "V10" "V11"
  • 将 var2 保存为因子并根据需要对其级别进行排序。
  • @raistlin 你能详细说明一下吗?

标签: r matrix ggplot2


【解决方案1】:

可能不是最漂亮的方式,但是:

通过执行恢复 var 的数量:

Y$number<-substr(Y$X2,2,length(Y$X2))

然后下面的代码(limits 强制 X 的顺序,labels 粘贴你想要的任何东西):

ggplot(Y)+
geom_tile(aes(x=X2, y=X1,fill = value))+
scale_x_discrete(limits=c("V1","V2","V3","V4","V5","V6","V7","V8","V9","V10","V11","V12"),labels=Y$number)

给予

或者按照你的建议:

ggplot(Y)+
geom_tile(aes(x=X2, y=X1,fill = value))+
scale_x_discrete(limits=c("V1","V2","V3","V4","V5","V6","V7","V8","V9","V10","V11","V12"),labels=1:12)

【讨论】:

    猜你喜欢
    • 2020-03-06
    • 1970-01-01
    • 2018-06-04
    • 2018-05-14
    • 2023-03-10
    • 1970-01-01
    • 2016-06-07
    • 2021-09-10
    • 2023-01-15
    相关资源
    最近更新 更多