gpt4 book ai didi

r - ggplot2条形图中的有序因子

转载 作者:行者123 更新时间:2023-12-01 13:05:12 25 4
gpt4 key购买 nike

我有一个数据框,其中包含(为简化起见)评委、电影和评分(评分范围为 1 星到 5 星):

d = data.frame(judge=c("alice","bob","alice"), movie=c("toy story", "inception", "inception"), rating=c(1,3,5))

我想创建一个条形图,其中 x 轴是星星的数量,每个条形的高度是该星星的评分数。

如果我这样做

ggplot(d, aes(rating)) + geom_bar()

这很好用,除了条形图没有在每个评分上居中并且每个条形图的宽度不理想。

如果我这样做

ggplot(d, aes(factor(rating))) + geom_bar()

x 轴上星星数量的顺序被打乱了。 (至少在我的 Mac 上;出于某种原因,默认顺序适用于 Windows 机器。)它看起来像这样: alt text

我试过了

ggplot(d, aes(factor(rating, ordered=T, levels=-3:3))) + geom_bar()

但这似乎没有帮助。

如何让我的条形图看起来像上图,但 x 轴上的顺序正确?

最佳答案

我不确定您的示例数据框是否代表您提供的图像。你提到你的评分是 1-5 级,但你的图像显示 -3 到 3 级。话虽如此,我认为这应该能让您朝着正确的方向前进:

示例数据:

d = data.frame(judge=sample(c("alice","bob","tony"), 100, replace = TRUE)
, movie=sample(c("toy story", "inception", "a league of their own"), 100, replace = TRUE)
, rating = sample(1:5, 100, replace = TRUE))

你最接近这个:

ggplot(d, aes(rating)) + geom_bar()

并且通过调整 geom_bar 中的默认 binwidth,我们可以使条形宽度更合适,并将评级作为一个因素将它们置于标签中心:

ggplot(d, aes(x = factor(rating))) + geom_bar(binwidth = 1)

alt text

如果您想在图表中加入其他变量之一,例如电影,您可以使用填充:

ggplot(d, aes(x = factor(rating), fill = factor(movie))) + geom_bar(binwidth = 1)

alt text

如果要比较的电影数量较少,将电影放在 x 轴上并填写评分可能更有意义:

ggplot(d, aes(x = factor(movie), fill = factor(rating))) + geom_bar(binwidth = 1)

如果这不能让您上路,请提供一个更具代表性的数据集示例。我无法重现排序问题,但这可能是由于您发布的样本数据与您正在分析的数据不同所致。

ggplot 网站也是一个很好的引用:http://had.co.nz/ggplot2/geom_bar.html

关于r - ggplot2条形图中的有序因子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3622407/

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