一项关于使用两种清洁产品(产品A和产品B)的市场调查按房间(厨房、浴室、卧室)、使用频率(每天、每周、每月)和产品瓶子大小(小、中、大)分开。
我认为表示这些结果的最好方法是柱状图。然而,我认为有更好的方法来表示这些结果,所以我来这里寻求更好的图形表示的建议,因为我对柱状图不是很满意。
在MWE中,数据是按升序排列的,但对于真实数据,不同的列大小使得绘图在视觉上非常混乱。
library(ggplot2)
Product <- c("Product A", "Product B")
Place <- c("Kitchen", "Bathroom", "Bedroom")
Bottle_size <- c("Small", "Medium", "Large")
Frequency <- c("Daily", "Weekly", "Monthly")
DF <- expand.grid(Bottle_size = Bottle_size,
Place = Place,
Frequency = Frequency,
Product = Product)
DF$Consumer_Approval <- seq(from = 10,
to = 100,
by = (100-10)/53)
ggplot(data = DF,
aes(x = Frequency,
y = Consumer_Approval)) +
geom_col(aes(fill = Bottle_size),
position = "dodge") +
facet_grid(Product ~ Place)实际数据类似于:enter image description here
发布于 2021-09-30 14:13:31
一种选择是棒棒糖图表,其中棒棒糖的高度显示产品A和产品B的消费者评级之间的差异。这允许在给定的设置中快速直观地估计首选产品:
ProdA <- split(DF, Product)[[1]]
ProdB <- split(DF, Product)[[2]]
DF <- dplyr::left_join(ProdA, ProdB, c("Bottle_size", "Place", "Frequency"))
DF$AvsB <- DF$Consumer_Approval.x - DF$Consumer_Approval.y
ggplot(data = DF, aes(x = Frequency, y = AvsB, color = Bottle_size)) +
geom_point(position = position_dodge(width = 0.5)) +
geom_linerange(aes(ymin = AvsB, ymax = 0), position = position_dodge(width = 0.5)) +
geom_hline(yintercept = 0, linetype = 2) +
ylim(-100, 100) +
facet_grid(.~Place) +
labs(y = "Prefers Product B <- No preference -> Prefers Product A")

https://stackoverflow.com/questions/69392779
复制相似问题