ggplot2 中带有分类值的折线图?
Line chart with categorical values in ggplot2?
我在构建折线图时遇到问题。这是我的折线图的输出。为什么输出是这样的,我的意思是线条不接触(不连续)。也许问题与我的数据格式或类型有关?
折线图代码:
plotLine <- ggplot(sales_clean,aes(x=sales_clean$Date,y=sales_clean$Net_Rev,na.rm = FALSE))
plotLine + geom_line()
1) 问题是 sales_clean$Year
是 factor
。
2)ggplot将您的x值解释为分类,将y值解释为连续和聚合值到条形图中(而不是条形图)。
请看模拟:
library(ggplot2)
set.seed(123)
sales_clean <- data.frame(Year = rep(factor(2014:2018), 1000), Net_Rev = abs(rnorm(5000)))
plotLine <- ggplot(sales_clean, aes(Year, Net_Rev, na.rm = FALSE))
plotLine + geom_line()
3) 一种解决方案是将因子转换为数值并按年聚合。
请看结果:
sales_clean$Year_num <- as.numeric(as.character(sales_clean$Year))
sales_clean_plot <- aggregate(Net_Rev ~ Year_num, sales_clean, sum)
plotLine <- ggplot(sales_clean_plot, aes(Year_num, Net_Rev, na.rm = FALSE))
plotLine + geom_line()
4) 最好不要在ggplot
的aes()
中使用$
,因为data.frame的名字已经在[=的第一个参数中提到了17=]。代码变得蹩脚且难以阅读。
我在构建折线图时遇到问题。这是我的折线图的输出。为什么输出是这样的,我的意思是线条不接触(不连续)。也许问题与我的数据格式或类型有关? 折线图代码: plotLine <- ggplot(sales_clean,aes(x=sales_clean$Date,y=sales_clean$Net_Rev,na.rm = FALSE)) plotLine + geom_line()
1) 问题是 sales_clean$Year
是 factor
。
2)ggplot将您的x值解释为分类,将y值解释为连续和聚合值到条形图中(而不是条形图)。
请看模拟:
library(ggplot2)
set.seed(123)
sales_clean <- data.frame(Year = rep(factor(2014:2018), 1000), Net_Rev = abs(rnorm(5000)))
plotLine <- ggplot(sales_clean, aes(Year, Net_Rev, na.rm = FALSE))
plotLine + geom_line()
3) 一种解决方案是将因子转换为数值并按年聚合。 请看结果:
sales_clean$Year_num <- as.numeric(as.character(sales_clean$Year))
sales_clean_plot <- aggregate(Net_Rev ~ Year_num, sales_clean, sum)
plotLine <- ggplot(sales_clean_plot, aes(Year_num, Net_Rev, na.rm = FALSE))
plotLine + geom_line()
4) 最好不要在ggplot
的aes()
中使用$
,因为data.frame的名字已经在[=的第一个参数中提到了17=]。代码变得蹩脚且难以阅读。