我有一个数据帧,具有12列和270行,我从一个.csv文件中读取,我想对其进行“比较”-将它们绘制在一个图中。
DataFrame
我想并排获得14张小提琴排行榜(或在不同情节中的前6张和其他6张),但是我不确定如何。
我知道它应该像这样:
df = pd.DataFrame(data=[['2018-12-24',1,True],
['2018-12-25',2,False],
['2019-12-24',3,True],
['2019-12-25',4,False],
['2020-12-24',5,False],
['2020-12-25',6,False]], columns=['d','n','b'])
df['d'] = pd.to_datetime(df['d'])
但是我只会得到“找不到对象变量”
编辑:
很明显,我引用的代码是错误的(我写了它,但是不记得df实际上是由什么组成的,以及它是由什么组成的)-那么如何实现呢?
答案 0 :(得分:1)
我希望我了解你想要的。尝试此操作,但请注意所有变量均为数字。
library(tidyverse)
df %>%
gather(key = "variable", value = "value") %>%
ggplot(aes(x = variable, y = value)) +
geom_violin(aes(fill = variable)) +
theme(legend.position = "bottom") +
guides(fill = guide_legend(reverse = TRUE)) +
coord_flip() +
xlab("") + ylab("")
答案 1 :(得分:1)
您需要首先pivot_longer
数据框。由于您没有任何可复制的数据,因此让我们首先进行以下操作:
set.seed(69)
df <- data.frame(replicate(14, rnorm(270, runif(1, 5, 10))))
names(df) <- paste0("h", 1:14)
现在我们可以做到:
library(ggplot2)
library(tidyr)
plot_df <- pivot_longer(df, cols = 1:14)
plot_df$name <- factor(plot_df$name, paste0("h", 1:14))
ggplot(plot_df, aes(name, value, fill = name)) + geom_violin()
reprex package(v0.3.0)于2020-07-28创建