Как я могу стандартизировать пропускную способность при создании нескольких ggplot2 с переменным масштабом y? - PullRequest
0 голосов
/ 23 мая 2019

У меня есть код для построения графиков для всех переменных в моих данных (36) и их экспорта автоматически. Он прекрасно работает, но установленная пропускная способность довольно мала. Когда я пытаюсь изменить привязку, она становится очень маленькой или очень большой для моих графиков в зависимости от их масштаба по оси Y. Как я могу увеличить его пропорционально для всех?

# Plot separate ggplot figures in a loop.
library(ggplot2)

# Make list of variable names to loop over.
var_list = combn(names(LessCountS)[1:37], 2, simplify=FALSE)
my_comparisons <- list( c("HC", "IN"), c("IN", "OUT"), c("HC", "OUT") )
symnum.args <- list(
  cutpoints = c(0.0001, 0.001, 0.01, 0.05, 1), 
  symbols = c("***", "**", "*", "NS")
)

# Make plots.
plot_list = list()
for (i in 1:37) {
  p = ggplot(LessCount1, aes_string(x=var_list[[i]][1], y=var_list[[i]][2])) +
    geom_dotplot(aes(fill= Type),
                 binaxis = "y",  stackratio = .5, binwidth = 90,
                 stackdir = "center"
    ) +
    theme_gray ()+
    labs(x="", y = "Cell Count (cells/\u03bcL)") +
    ggtitle(var_list[[i]][2]) +
    scale_x_discrete(labels=c("HC" = "Controls", "IN" = "Inpatients",
                              "OUT" = "Outpatients")) +
    theme(plot.title = element_text(hjust = 0.5, vjust = 2), legend.text=element_text(size=12),
          axis.text = element_text(size=14),
          axis.title = element_text(size = 14)) +
    scale_fill_manual(values=c("#CCCCCC", "#990066", "#3366CC")) +
    stat_summary(fun.y = median, fun.ymin = median, fun.ymax = median,
                 geom = "crossbar", width = 0.5, size = .45) +
      stat_compare_means(comparisons = my_comparisons, label.y = , label = "p.signif", size = 5, symnum.args = symnum.args) +
    stat_compare_means(label.y = )

  plot_list[[i]] = p
}

# Save plots to tiff. Makes a separate file for each plot.
for (i in 1:37) {
  file_name = paste("LessCount1_plot_", var_list[[i]][2], ".tiff", sep="")
  tiff(file_name)
  print(plot_list[[i]])
  dev.off()
}

Примеры исходов , если , я меняю bindwidth. enter image description here enter image description here

Если я не укажу binwidth, они будут одинакового размера, но довольно маленького размера. Я хочу увеличить его пропорционально для всех, независимо от их масштаба, надеясь, что это возможно!

Заранее спасибо, S

1 Ответ

0 голосов
/ 24 мая 2019

Вам необходимо сделать binwidth условным для данных, а не устанавливать для него фиксированное значение.Вот пример:

library("ggplot2")

for (ii in 1:5) {
    y <- names(mtcars)[ii]
    p <- ggplot(mtcars, aes(x = 1, y = !!sym(y))) +
        geom_dotplot(binaxis = "y", stackdir = "center",
                     # binwidth = 1
                     binwidth = diff(range(mtcars[, y]))/20)
    print(p)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...