在ggplot中使用条形图时出现意外的x轴刻度线
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在ggplot中使用条形图时出现意外的x轴刻度线相关的知识,希望对你有一定的参考价值。
我正在尝试在ggplot中创建一个条形图,显示特定日期两个不同位置的利润。
这是我正在使用的代码:
test_data <- data.frame("location" = c('location_1', 'location_2',
'location_1', 'location_2',
'location_1', 'location_2',
'location_1', 'location_2',
'location_1', 'location_2',
'location_1', 'location_2',
'location_1', 'location_2',
'location_1', 'location_2',
'location_1', 'location_2'),
"date" = c(as.Date('2018-07-29'), as.Date('2018-07-29'),
as.Date('2018-07-30'), as.Date('2018-07-30'),
as.Date('2018-08-02'), as.Date('2018-08-02'),
as.Date('2018-08-03'), as.Date('2018-08-03'),
as.Date('2018-08-05'), as.Date('2018-08-05'),
as.Date('2018-08-08'), as.Date('2018-08-08'),
as.Date('2018-08-12'), as.Date('2018-08-12'),
as.Date('2018-08-15'), as.Date('2018-08-15'),
as.Date('2018-08-19'), as.Date('2018-08-19')),
"profit" = c(540, 120, 265, 493, 245, 432, 987, 566,
654, 765, 234, 767, 650, 765, 874, 652,
175, 497),
stringsAsFactors = FALSE)
sundays <- c(as.Date('2018-07-29'),as.Date('2018-08-05'),
as.Date('2018-08-12'),as.Date('2018-08-19'))
test_data %>%
filter(date %in% sundays) %>%
ggplot(aes(x=date, y=profit)) +
geom_bar(stat = 'identity') +
xlab('Date') +
ylab('Profit') +
facet_wrap(~location)
所以我想创建一个只显示星期日的图表,但是当它被绘制时,它会将错误的日期与条形相关联。
我该如何解决?提前致谢!
答案
检查此解决方案:
test_data %>%
filter(date %in% sundays) %>%
mutate(date = date %>% as.character()) %>%
ggplot(aes(x=date, y=profit)) +
geom_bar(stat = 'identity') +
xlab('Date') +
ylab('Profit') +
facet_wrap(~location) +
scale_x_discrete(
labels = function(x) x %>% as.Date() %>% format('%b %d')
)
Answer to question in comment:
我想出了一些“肮脏的黑客”,但我不确定它是否适用于所有情况。检查并告诉我。
library(tidyverse)
library(wrapr)
test_data %>%
filter(date %in% sundays) %>%
arrange(date) %>%
group_by(location) %>%
mutate(
xpos = row_number(),
xlab = if_else(xpos %% 2 == 0, '', date %>% as.Date() %>% format('%b %d'))
) %.>%
ggplot(
data = .,
aes(x = factor(xpos), y = profit)
) +
geom_bar(stat = 'identity') +
xlab('Date') +
ylab('Profit') +
facet_wrap(~location) +
scale_x_discrete(
breaks = .$xpos,
labels = .$xlab
)
以上是关于在ggplot中使用条形图时出现意外的x轴刻度线的主要内容,如果未能解决你的问题,请参考以下文章
如何在 matplotlib 条形图上旋转 x 轴刻度标签?尝试了几种方法,都没有奏效