【问题标题】:control x axis of a violin plot in ggplot2在ggplot2中控制小提琴图的x轴
【发布时间】:2021-06-15 20:28:36
【问题描述】:

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

【问题讨论】:

    标签: r ggplot2 violin-plot


    【解决方案1】:

    你错过了这行末尾的)p &lt;- 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
    

    【讨论】:

    • 好地方,为复制粘贴错误道歉!它为我运行,我只是想知道为什么 as.factor 是必要的。李嘉图的理论是明智的。
    【解决方案2】:

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

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

    【讨论】:

    • 如果有帮助,请接受将帖子标记为已解决的答案:)
    猜你喜欢
    • 2018-12-10
    • 1970-01-01
    • 2017-08-11
    • 2020-08-15
    • 1970-01-01
    • 2019-01-21
    • 2021-12-23
    • 1970-01-01
    • 2018-01-15
    相关资源
    最近更新 更多