2016-04-19 5 views
0

Я новичок в R, и сегодня я стараюсь, чтобы сохранить свою фигуру, следуя код:Почему я не вижу файл png?

powerplant <- ggplot(Emission.l, aes(x = Year, y = value, fill = variable))+ 
    theme(axis.text.x = element_text(angle = 90, hjust = 1))+ 
    geom_bar(stat = 'identity', position = 'dodge') + 
    ggtitle(Emission.Aerosol$Facility.Name)+ 
    ylab("Emission(Tons)")+scale_fill_discrete(name = '', labels = c('SO2 (tons)', 'NOx (tons)')) + 
    scale_x_continuous(breaks = 2003:2015) 

png(file = paste0(Emission.Aerosol$Facility.Name,".png"), 
    width = 439, height = 266, units = "px",pointsize = 12, 
    bg = "transparent") 
dev.off() 

Тогда, я могу видеть файл PNG был создан в моей папке, но это была только белая фигура. Пожалуйста, дайте мне знать, что не так с моим кодом. Спасибо большое!

+0

Почему бы не просто использовать ggsave()? –

+0

Это помогает, если вы предоставляете ссылку на a) набор данных, над которым вы работаете ... Я поддерживаю рекомендацию Ричардса ... – Technophobe01

+0

Это работает! Большое спасибо ! –

ответ

0

В общем, я лично считаю, что более чистое выделение конструкции ggplot(), как описано ниже, это облегчает игру со строительством ggplot при построении грамматики сюжета, тогда вы можете выберите способ сохранения/печати.

Надеюсь, это поможет.

require(ggplot2) 

    gp <- ggplot(Emission.l, aes(x = Year, y = value, fill = variable)) 
    gp <- gp + theme(axis.text.x = element_text(angle = 90, hjust = 1)) 
    gp <- gp + geom_bar(stat = 'identity', position = 'dodge') 
    gp <- gp + ggtitle(Emission.Aerosol$Facility.Name) 
    gp <- gp + ylab("Emission(Tons)") 
    gp <- gp + scale_fill_discrete(name = '', 
            labels = c('SO2 (tons)', 'NOx (tons)')) 
    gp <- gp + scale_x_continuous(breaks = 2003:2015) 

    powerplant <- gp 
    print(powerplant) 
    dev.off() 
+0

@ Пит Джарвис Большое спасибо! Но как вы знаете, как установить цвет баров? Например, я бы поставил SO2 в красный цвет и NOx синим цветом. Я ценю ваш совет, который очень полезен для нового пользователя! –

+0

Спасибо за ваш совет. Я проверяю эти ресурсы до тех пор, пока вы не потеряете их. Это мой первый раз, чтобы сделать эти сюжеты. Спасибо за ваши подсказки, но после добавления кода: я получаю «Ошибка: эстетика должна быть либо длиной 1, либо такой же, как данные (26): fill». –

+0

Код «Emission.l <- расплав (Emission.Aerosol, id.vars = 'Year', measure.vars = c ('SO2.tons', 'NOx.tons')) gp <- ggplot (Em = 1)) gp <- gp() = 0, + geom_bar (stat = 'identity', position = 'dodge', fill = c ("red", "blue")) gp <- gp + ggtitle (Emission.Aerosol $ Facility.Name) gp <- gp + ylab («Излучение (тонны)») gp <- gp + scale_fill_discrete (name = '', labels = c ('SO2 (тонны)', 'NOx (тонны)')) gp <- gp + scale_x_continuous (breaks = 2003: 2015) ' –

2

Try,

png(...) 
print(powerplant) 
dev.off() 

или просто использовать ggsave. Команда png фактически не помещает никаких графиков на диск. Он просто создает пустой файл png, который затем готов принять сюжет. После его запуска вы отправляете ggplot или lattice графикой на устройство print их. Базовые графические команды будут отправляться непосредственно на устройство.

+0

Большое спасибо за информацию! –