我有一个非常非常艰难的时间让x轴看起来对我的图表是正确的。
这是我的数据(通过dput()
生成):
df <- structure(list(Month = structure(1:12, .Label = c("2011-07-31", "2011-08-31", "2011-09-30", "2011-10-31", "2011-11-30", "2011-12-31", "2012-01-31", "2012-02-29", "2012-03-31", "2012-04-30", "2012-05-31", "2012-06-30"), class = "factor"), AvgVisits = c(6.98655104580674,7.66045407330464, 7.69761337479304, 7.54387561322994, 7.24483848458728, 6.32001400498928, 6.66794871794872, 7.207780853854, 7.60281201431308, 6.70113837397123, 6.57634103019538, 6.75321935568936)), .Names = c("Month","AvgVisits"), row.names = c(NA, -12L), class = "data.frame")
以下是我试图绘制的图表:
ggplot(df, aes(x = Month, y = AvgVisits)) +
geom_bar() +
theme_bw() +
labs(x = "Month", y = "Average Visits per User")
该图表工作正常 - 但是,如果我想调整日期的格式,我相信我应该添加:
scale_x_date(labels = date_format("%m-%Y"))
我试图制作它,以便日期标签是&#39; MMM-YYYY&#39;
ggplot(df, aes(x = Month, y = AvgVisits)) +
geom_bar() +
theme_bw() +
labs(x = "Month", y = "Average Visits per User") +
scale_x_date(labels = date_format("%m-%Y"))
当我描绘时,我继续得到这个错误:
stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.
尽管对geom_line
和geom_bar
的格式进行了数小时研究,但我无法修复它。谁能解释我做错了什么?
修改:作为后续想法:您可以使用日期作为因素,还是应该在日期列中使用as.Date
?
答案 0 :(得分:52)
你能用日期作为因素吗?
是的,但你可能不应该这样做。
...或者您应该在日期列中使用
as.Date
吗?
是
这引导我们:
library(scales)
df$Month <- as.Date(df$Month)
ggplot(df, aes(x = Month, y = AvgVisits)) +
geom_bar(stat = "identity") +
theme_bw() +
labs(x = "Month", y = "Average Visits per User") +
scale_x_date(labels = date_format("%m-%Y"))
我已将stat = "identity"
添加到您的geom_bar
来电。
此外,有关binwidth的消息不是错误。错误实际上会在其中显示“错误”,同样警告将始终在其中显示“警告”。否则它只是一条消息。
答案 1 :(得分:48)
显示2017年2月2017年1月的月份等:
scale_x_date(date_breaks = "1 month", date_labels = "%b %Y")
如果日期占用太多空间,请对其进行调整:
theme(axis.text.x=element_text(angle=60, hjust=1))