Я использую ggplot2 для построения графика, который выглядит как тепловая карта с правом большинства и сверху большинства строк и столбцов, соответственно отображающих сумму ее элементов. Тем не менее, это огромный набор данных, и все «суммарные» числа втиснуты в него без ясности. Я хотел бы расширить сюжет, чтобы метки выглядели читаемыми. Вот мой код.Как увеличить ширину всего графика с помощью ggplot2 R
mat <- read.csv("trial.csv",sep = ",", header=T, row.names=1)
vec <- as.vector(as.matrix(mat))
varieties = names(mat)
matVar = matrix(vec, ncol = length(varieties), nrow = length(attr(mat, "row.names")))
library(ggplot2)
require(reshape2)
library(grid)
require(grid)
mat$id <- rownames(mat)
gg <- melt(mat)
#mat$id <- reorder(mat$id)
#gg$id<-factor(gg$id)
gg$id <- as.character(gg$id)
gg$id <- factor(gg$id, levels=rev(unique(gg$id)))
ggplot(gg, aes(y=variable,x=id))+
geom_tile(aes(fill=value))+
scale_fill_gradient(low="red",high="white")+
geom_text(aes(label=value), data=cbind(aggregate(value~variable, gg, sum), id="total")) +
geom_text(aes(label=value),data=cbind(aggregate(value~id, gg, sum), variable="total")) +
theme(axis.text.x = element_blank())+
scale_y_discrete(limits=c(levels(gg$variable), "total"))+
scale_x_discrete(limits=c(levels(gg$id), "total"))+
coord_flip()+labs(y = "Patients", x= "Genes")
Вот пример данных, но мой фактический набор данных действительно огромен.
h1, h2, h3, h4, h5, h6, h7, h8, h9
a, 1, 1, 1, 0, 1, 1, 0, 1
b, 0, 1, 1, 1, 0, 0, 0, 0
c, 1, 0, 0, 1, 1, 1, 1, 1
d, 1, 0, 1, 0, 0, 0, 1, 0
e, 1, 0, 0, 0, 0, 1, 0, 0
f, 1, 1, 0, 0, 0, 0, 0, 0
g, 0, 0, 0, 0, 0, 0, 0, 0
h, 0, 0, 0, 0, 0, 1, 1, 0
Это выход
Спасибо за ваш ответ. Мой вопрос был не ясен. Прости. Я мог бы правильно выбрать номера справа. Однако у меня проблемы с верхними номерами. Это может быть из-за очень тонких линий в сюжете, которые я не могу исправить. Я бы очень признателен, если бы вы могли мне помочь. – abn