简体   繁体   English

如何增加 ggplot2 图例大小以将图形导出为 png?

[英]How to increase ggplot2 legend size for exporting graph as png?

I'm trying to export a graph I made for a presentation comparing the average response of plants to differing fertilizer treatments.我正在尝试导出我为演示文稿制作的图表,该图表比较了植物对不同肥料处理的平均反应。 I am using the R png function for exporting the image, and I need it to be the size that is defined in the code below.我使用 R png function 来导出图像,我需要它是下面代码中定义的大小。 The only thing I don't know how to do is to increase the legend size so that it appears larger, like the rest of the graph.我唯一不知道该怎么做就是增加图例大小,使其看起来更大,就像图中的 rest 一样。 How can I do this?我怎样才能做到这一点?

Data:数据:

dataset <- data.frame(cultivar = c('var1',
                                   'var1',
                                   'var1',
                                   'var1',
                                   'var3',
                                   'var3',
                                   'var3',
                                   'var3',
                                   'var2',
                                   'var2',
                                   'var2',
                                   'var2',
                                   'var3',
                                   'var3',
                                   'var1',
                                   'var2',
                                   'var2',
                                   'var2',
                                   'var1',
                                   'var2',
                                   'var3',
                                   'var3',
                                   'var1',
                                   'var1',
                                   'var1',
                                   'var3',
                                   'var3',
                                   'var1',
                                   'var2',
                                   'var2',
                                   'var2',
                                   'var2',
                                   'var3',
                                   'var1',
                                   'var3',
                                   'var1'),
                      rate = c(10,
                               20,
                               30,
                               40,
                               10,
                               20,
                               30,
                               40,
                               10,
                               20,
                               30,
                               40,
                               20,
                               40,
                               10,
                               10,
                               30,
                               20,
                               30,
                               40,
                               10,
                               30,
                               40,
                               20,
                               20,
                               10,
                               30,
                               30,
                               40,
                               10,
                               30,
                               20,
                               40,
                               10,
                               20,
                               40),
                      vi = c(1354,
                             1307,
                             1529,
                             1380,
                             1416,
                             1342,
                             1419,
                             1363,
                             1282,
                             1287,
                             1202,
                             1312,
                             1294,
                             1248,
                             1431,
                             1421,
                             1287,
                             1439,
                             1405,
                             1406,
                             1395,
                             1540,
                             1222,
                             1247,
                             1375,
                             1235,
                             1436,
                             1335,
                             1478,
                             1356,
                             1542,
                             1219,
                             1392,
                             1406,
                             1524,
                             1342))

Code to generate the graph:生成图表的代码:

#Aggregate data frame
datasetMean <- aggregate.data.frame(dataset, by=list(dataset$cultivar, dataset$rate), mean)
datasetMean <- select(datasetMean, Group.1, Group.2, vi)
colnames(datasetMean) <- c("cultivar","rate","vi")


#Generate graph and export graph as png
png("scores.png", width = 1000, height = 700)

ggplot(datasetMean, aes(x = cultivar, y = vi, fill=factor(rate)))+
  geom_bar(stat="identity", width = 0.6, position = "dodge", col = "black")+
  scale_fill_discrete(name = "Rate", labels = c("10","20","30","40"))+
  xlab("Cultivar") + ylab("vi") +
  ggtitle("VI Scores")+
  theme(plot.title = element_text(hjust = 0.5, size = 30),
        strip.text.x = element_text(size = 25),
        axis.text = element_text(size = 20),
        axis.title = element_text(size = 25))

dev.off()

Thanks to the comments above, I updated my code with the legend.key.size , legend.text , and legend.title additions, and it produced exactly what I needed.感谢上面的评论,我更新了我的代码,添加了legend.key.sizelegend.textlegend.title ,它产生了我所需要的。

ggplot(datasetMean, aes(x = cultivar, y = vi, fill=factor(rate)))+
  geom_bar(stat="identity", width = 0.6, position = "dodge", col = "black")+
  scale_fill_discrete(name = "Rate", labels = c("0X","1X","4X","8X"))+
  xlab("Cultivar") + ylab("vi")+
  ggtitle("VI Scores")+
  theme(plot.title = element_text(hjust = 0.5, size = 30),
        strip.text.x = element_text(size = 25),
        axis.text = element_text(size = 20),
        axis.title = element_text(size = 25),
        legend.key.size = unit(1.5, "cm"),
        legend.text = element_text(size = 15),
        legend.title = element_text(size = 20),
        axis.title.y = element_text(angle = 0))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM