控制ggplot2中小提琴图的x轴

control x axis of a violin plot in ggplot2

我正在 ggplot2 中为一个时间序列生成小提琴图,year_1 到 year_32。我的 df 中的年份存储为数值。从我看到的例子来看,似乎我必须将这些数字年份值转换为每年绘制一把小提琴的因素;事实上,如果我 运行 没有 as.factors 的代码,我会得到一把又大又肥的小提琴。我想明白为什么 geom_violin 不能在 x 轴上有数值;或者如果我错了,如何使用它们?

所以:

my_data$year <- as.factor(my_data$year)

p <- ggplot(data = my_data, aes(x = year, y = continuous_var)+
 geom_violin(fill = "#FF0000", color = "#000000")+
 ylim(0,500)+
 labs(x = "x_label", y = "y_label")

p +my_theme()

工作正常,但如果我跳过

my_data$year <- as.factor(my_data$year)

没用,我弄了一把又大又肥的小提琴,用了这么多年。为什么?

TIA

你错过了这一行末尾的 ) p <- ggplot(data = my_data, aes(x = year, y = continuous_var)

我用 ToothGrowth 数据集构建了一个可重现的例子: 这现在应该可以工作了:

library(ggplot2)
my_data <- ToothGrowth

my_data$dose <- as.factor(my_data$dose)

p <- ggplot(data = my_data, aes(x = dose, y = len))+
              geom_violin(fill = "#FF0000", color = "#000000")+
              ylim(0,500)+
              labs(x = "x_label", y = "y_label") +
              theme_bw()
p

PS:这个讨论更适合交叉验证,因为它更像是一个统计问题而不是编码问题。

我不是 100% 确定,但这是我的解释:小提琴图显示了一组数据的密度,您可以将数据分组,以便为​​数据的每个部分绘制一个小提琴图.但是如果你用来划分组的指标(x 轴)是连续的,你将有无限的分组(一组为 0,一组为 0.1,一组为 0.01,等等),所以在最后你实际上不能划分你的数据,而 ggplot 可能会忽略 x 变量并为你的所有数据制作一把小提琴。