在 ggplot2 中控制小提琴图的 x 轴

问题描述

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

enter image description here

,

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...