如何增加 ggplot2 图例大小以将图形导出为 png?
How to increase ggplot2 legend size for exporting graph as png?
我正在尝试导出我为演示文稿制作的图表,比较植物对不同肥料处理的平均反应。我正在使用 R png 函数导出图像,我需要它是下面代码中定义的大小。我唯一不知道该怎么做的是增加图例大小,使其看起来更大,就像图表的其余部分一样。我该怎么做?
数据:
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))
生成图表的代码:
#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()
感谢上面的评论,我用 legend.key.size
、legend.text
和 legend.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))
我正在尝试导出我为演示文稿制作的图表,比较植物对不同肥料处理的平均反应。我正在使用 R png 函数导出图像,我需要它是下面代码中定义的大小。我唯一不知道该怎么做的是增加图例大小,使其看起来更大,就像图表的其余部分一样。我该怎么做?
数据:
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))
生成图表的代码:
#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()
感谢上面的评论,我用 legend.key.size
、legend.text
和 legend.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))