Я работаю над созданием некоторых участков для сбора бумаги и немного спотыкаюсь о коде.Я воссоздал важные фрагменты, используя «бриллианты», чтобы людям было проще воссоздать
Часть 1
Цель состоит в том, чтобы создать гистограмму, которая будетнесколько переменных, например, «карат» и «цвет», так как они будут выступать в качестве заголовков для графиков.Я использовал pginate ggforce, чтобы позволить мне распределить его по нескольким страницам, так как я хотел бы, чтобы каждая страница показывала результаты по группам - здесь я добавил значения «1», «2» или «3» для каждойстрока кадра данных.Несмотря на то, что я мог бы установить подкадр данных и создавать графики по отдельности, проблема в том, что ширина полос не совпадает между страницами, даже когда я добавляю width = x к geom_bar (хотя ширина для каждой страницы одинакова).
Кто-нибудь знает, как мне это сделать?Мне было интересно, поможет ли aes_string, но я не был уверен, что он будет работать с несколькими нужными мне фасетами.
Часть 2 Когда я пытаюсь добавить код для сохранения изображенийон переопределяет команду grid.arrange ..., чтобы указать размер графика (чтобы они все были согласованы) и корректируется, чтобы заполнить пустое пространство.Это легко исправить?
Спасибо, Кэл
library(ggplot2)
library(ggforce)
library(plyr)
library(dplyr)
library(grid)
library(egg)
df = diamonds
df$Group<- rep(1:3,length.out=nrow(df))
for (i in df$Group) {
p <- ggplot(data=df, aes(x=cut, y=clarity, fill=price)) +
# preserve = single keeps all bars same width, rather than adjusting to
# the space
geom_bar(position=position_dodge2(preserve = 'single'),
stat="identity", color = "black", size = 0.2) +
# paginate allows the chart to be printed on multiple pages
# strip position adds facet title to top of page
facet_wrap_paginate(c("carat","color"), ncol = 3, nrow = 3,
scales = "fixed", strip.position = "top", page = i)
# manually adjust the size of the plot panels
grid.arrange(grobs = lapply(
list(p),
set_panel_size,
width = unit(8,"cm"),
height = unit(5,"cm")
))
}