1

我正在 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

4

2 回答 2

1

你错过了)这一行末尾的ap <- 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

在此处输入图像描述

于 2021-03-18T12:42:52.043 回答
0

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

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

于 2021-03-18T12:56:06.383 回答