gpt4 book ai didi

r - 如何正确形成 ggplot 图表,而不切断图表的重要部分?

转载 作者:行者123 更新时间:2023-12-03 08:42:00 24 4
gpt4 key购买 nike

我使用ggplot2包的ggplot() + geom_bar()函数创建了一个条形图。我还使用 coord_flip() 来反转条的方向,并使用 geom_text() 在每个条的顶部添加值。有些条形有不同的颜色,因此图表后面有一个图例。我得到的结果是一张图片,一半被图表占据,一半被图例占据,并且由于图表尺寸较小,最长条形顶部的值被切断。

关于如何放大图表的大小并减小图例的大小,以便条形图的值不被截断,有什么想法吗?

谢谢

这是我关于虚构数据的代码:

labels <- c("A","B","C","D","E")
freq <- c(10.3678, 5.84554, 1.5673, 2.313, 7.111)

df <- as.data.frame(cbind(labels,freq))

type <- c("rich","poor","poor","poor","rich")

library(ggplot2)
ggplot(df, aes(x = reorder(labels,freq), y= freq, fill = type)) +
geom_bar(stat = "identity", alpha = 1, width = 0.9)+
coord_flip()+
xlab("")+
ylab("Mean frequency")+
scale_fill_manual(name = "Type", values = c("red", "blue")) +
ggtitle("Mean frequency of different labels")+
geom_text(label = sort(freq, decreasing = FALSE), size = 3.5, hjust = -0.2)

这是它给出的结果图: enter image description here

最佳答案

对此有一些修复:

更改您的限制

如 @Dave2e 所示 - 请参阅他的回复

更改输出的大小

R 中图形的有趣之处在于图形设备的纵横比和分辨率会改变绘图的结果和外观。当我运行你的代码时......没有观察到剪切。您可以通过创建绘图来测试这一点,然后以不同的方式保存。如果我采用您的默认代码,以下是使用 width=height= 的不同参数将 ggsave() 作为 png 得到的结果:

ggsave('a1.png', width=10, height=5)

enter image description here

ggsave('a2.png', width=15, height=5)

enter image description here

设置扩展

第三种方法是设置扩展范围限制。默认情况下,ggplot2 实际上会在刻度的末尾添加一些“填充”。因此,如果将限制设置为 0 到 10,实际上绘图区域会超出此范围(默认情况下超出约 5%)。您可以使用 ggplotscale_... 命令的 expand= 参数重新定义该设置。因此您可以设置此限制,例如在以下代码中:

labels <- c("A","B","C","D","E")
freq <- c(10.3678, 5.84554, 1.5673, 2.313, 7.111)
type <- c("rich","poor","poor","poor","rich")
df <- data.frame(labels, freq, type)

library(ggplot2)
ggplot(df, aes(x = reorder(labels,freq), y= freq, fill = type)) +
geom_bar(stat = "identity", alpha = 1, width = 0.9)+
coord_flip()+
xlab("")+
ylab("Mean frequency")+
scale_fill_manual(name = "Type", values = c("red", "blue")) +
ggtitle("Mean frequency of different labels")+
geom_text(label = freq, size = 3.5, hjust = -0.2) +
scale_y_continuous(expand=expansion(mult=c(0,0.15)))

enter image description here

您可以定义轴的下扩展和上扩展,因此在上面的代码中,我定义了 y 刻度的下限不设置扩展,并使用 0.15(大约 15%)的乘数上限。我认为默认值为 0.05(或 5%)。

关于r - 如何正确形成 ggplot 图表,而不切断图表的重要部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62478541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com