【问题标题】:How to create a boxplot including a rating in different colors?如何创建包含不同颜色评级的箱线图?
【发布时间】:2021-01-04 18:31:55
【问题描述】:

我在处理数据时遇到问题。主题是肉类卖家的评级。我想看看收视率是否对肉价有影响。 我想做一个箱线图,在 x=meat y=price 上显示,箱线图以绿色显示正面评级,红色显示负面评级。

如果我使用 pivot.longer,该列将不会产生正确的效果,涉及正面或负面评级的数量。

【问题讨论】:

  • 箱线图是每个 x 值的多个数据点的汇总图。在你的情况下只有一个值,所以不清楚你想如何把它变成一个箱线图?
  • 避免使用图片来展示您的数据。相反,请包含一个简单的数据框,以便我们更好地了解您的数据以及如何为您提供帮助。即使如此,我也不确定你到底在问什么。会有一两个箱线图吗?箱线图的哪些部分应该被着色——整个东西?盒子?胡须?你想要一个散点图吗?
  • 嗨,马里奥,我想在 xaxis 上显示肉,在 yaxis 上显示价格。然后我想根据评级(正面和负面)显示箱线图。我的问题是,我不知道根据每块肉的评分数量来区分正面和负面评分之间的差异。例如,第一个肉类销售商有 23 个正面评价和 4 个负面评价。我怎么能在我的情节中形象化呢?
  • 嗨查理,每块肉应该有两个箱线图。绿色为正面评价,红色为负面评价。

标签: r ggplot2 data-visualization multiple-columns boxplot


【解决方案1】:

箱线图似乎不一定是可视化此二进制数据的最佳方式。以下是一些示例,您可以如何绘制该数据并对价格与正面评分比例之间的线性相关性进行简单分析。

# approximation of your data
mydf <- data.frame(meat=LETTERS[1:3], price=c(100, 23, 45), 
                   posR=c(23,2,6), negR=c(4,1,0))

# consider a barplot to show ratings:
barplot(cbind(posR, negR) ~ meat, data=mydf, col=c(2,1))
legend("topright", c("positive", "negative"), fill = c(2,1))

mydf$fracPos <- with(mydf, posR/(posR + negR))

# plot positive fraction
with(mydf, barplot(cbind(fracPos, 1-fracPos) ~ meat, data=mydf, col=c(2,1)))
legend("right", c("positive", "negative"), fill = c(2,1))

# calculate pearson correlation
lm1 <- lm(fracPos ~ price, data=mydf)

# plot average rating over price, add trendline and p-value of correlation
plot(fracPos ~ price, data=mydf, 
     sub=paste0("p=", sprintf("%.3g", summary(lm1)[[4]][[8]]), "; R.sq=", 
        sprintf("%.3g", summary(lm1)$r.squared)))
abline(coef(lm1), col="red")

如果您仍想绘制箱线图,请记住,中位数只能是该系统中的一个或另一个二进制值。我们也在这里确定平均值并绘制它。在此示例中,正面评级被指定为 +1 值,负面评级为 -1。

# generating ratings vectors with +1 for pos and -1 for each neg rating
mydf$ratings <- apply(mydf, 1, function(x) c(rep(1, x[["posR"]]), rep(-1, x[["negR"]])))

# calculate mean rating
mydf$avgR <- sapply(mydf$ratings, mean)

# show boxplots with mean as a red dot
with(mydf, boxplot(setNames(ratings, meat)))
points(mydf$avgR, col="red", pch=18)

reprex package (v0.3.0) 于 2021-01-04 创建

【讨论】:

    猜你喜欢
    • 2017-07-16
    • 1970-01-01
    • 2019-02-20
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多