Я вижу много постов, которые касаются моего вопроса, но не достигают цели. Извините, если я пропустил решения в другом месте.
Я заметил, что R, кажется, назначает разные типы графиков как разные типы объектов или как NULL, но я не уверен почему. Вы можете помочь мне распаковать это? Цель состоит в том, чтобы просто сохранить график как объект, который может быть отображен позже в различных файлах уценки, но мне не нужно ничего более сложного, чем базовая печать c - без решеток и т. Д. c.
Например,
# Toy data setup
set.seed(63)
d <- rnorm(100)
Гистограмма Basi c не отображается при вызове одного объекта, но отображается при переносе в функцию plot ().
hist(d) # works as expected
p1 <- hist(d) # saves as a "List of 6" with class "histogram"
p1; print(p1) # both print all data in the list but no histogram plot
plot(p1) # shows histogram plot
Variation использование функции plot сохраняет как NULL
plot(d, type="h") # works as expected
p2 <- plot(d) # saves as "NULL (empty)"
p2; print(p2) # both print NULL as expected given how it saved
plot(p2) # generates error message, as expected
Подход ggplot также сохраняет и работает, как и ожидалось
library(tidyverse)
ggplot() +aes(d) + geom_histogram() # works as expected with message info
p3 <- ggplot() +aes(d) + geom_histogram() # saves as "List of 9" with class "gg" and "ggplot"
p3 # shows histogram as expected
Таким образом, 3 различных способа показать базовую c гистограмму (как) и все ведут себя по-разному при попытке назначить сюжет как объект для последующего вызова. Даже Hist () и ggplot (), сохраненные как объекты, отображаются по-разному при вызове, даже если они оба сохраняются в виде списков.
Что мне не хватает?
Чтобы сделать вещи немного сложнее, я заметил, что если я наложу графики, как и гистограммы ниже, на один график, назначенный объект не будет содержать оба графика. Я мог бы также увидеть, что это полезно для сохранения подгоночных линий, добавленной точки или текста и т. Д. c.
Что мне нужно сделать, чтобы сохранить добавления графика к объекту графика? Следующий пример кода взят из R Блоггеров .
#Random numbers
h2<-rnorm(1000,4)
h1<-rnorm(1000,6)
# Histogram Colored (blue and red)
hist(h1, col=rgb(1,0,0,0.5),xlim=c(0,10), ylim=c(0,200), main="Overlapping Histogram", xlab="Variable")
hist(h2, col=rgb(0,0,1,0.5), add=T)
Они работают как положено. Однако, если я присоединю их к точке с запятой после присвоения первой объекту, первые изменения гистограмм пропадут, и перекрывающаяся гистограмма будет отсутствовать. Имеет смысл, чтобы перекрывающаяся гистограмма исчезла, поскольку вторая команда фактически не применяется к сохраненному объекту гистограммы, но мне интересно, как ее добавить.