为什么在 ggplot geom_col 范围内的条形图不可见但标签可见?
Why are the bars at limits of ggplot geom_col not visible but the labels are?
我正在尝试将 geom_col()
绘图的限制设置为仅包含特定日期。但是,当我尝试使用 scale_x_date()
设置限制时,端点的条形消失了。如果端点被移动,新的端点将消失。
library(ggplot2)
TestData <- data.frame(
"Date" = as.Date(c('2020-10-16','2020-10-17','2020-10-18', '2020-10-19', '2020-10-20')),
"Number" = c(5,3,2,4,1)
)
ggplot(TestData, aes(x = Date, y = Number, fill = 'red', col = 'white')) +
geom_col() +
scale_x_date(limits = as.Date(c('2020-10-17','2020-10-19'))) +
geom_text(aes(label=Number), vjust = -0.5) +
ylim(0,15)
上面的 MWE 生成下面的图。
无论我使用xlim()
还是scale_x_date()
都会出现同样的问题。
我同意处理此问题的最佳方法是过滤您的数据。您可以使用 dplyr
library(dplyr)
TestData %>%
filter(Date>='2020-10-17' & Date<='2020-10-19') %>%
ggplot(aes(x = Date, y = Number, fill = 'red', col = 'white')) +
geom_col() +
geom_text(aes(label=Number), vjust = -0.5) +
ylim(0,15)
从技术上讲,您也可以使用秤来完成,但这有点麻烦。您只需要稍微调整端点以过滤掉其他 geom 以确保它们被丢弃。
ggplot(TestData, aes(x = Date, y = Number, fill = 'red', col = 'white')) +
geom_col() +
scale_x_date(limits=as.Date(c('2020-10-17','2020-10-19')) + c(-.5, .5)) +
geom_text(aes(label=Number), vjust = -0.5) +
ylim(0,15)
这仍然会生成有关丢弃值的警告消息。
我正在尝试将 geom_col()
绘图的限制设置为仅包含特定日期。但是,当我尝试使用 scale_x_date()
设置限制时,端点的条形消失了。如果端点被移动,新的端点将消失。
library(ggplot2)
TestData <- data.frame(
"Date" = as.Date(c('2020-10-16','2020-10-17','2020-10-18', '2020-10-19', '2020-10-20')),
"Number" = c(5,3,2,4,1)
)
ggplot(TestData, aes(x = Date, y = Number, fill = 'red', col = 'white')) +
geom_col() +
scale_x_date(limits = as.Date(c('2020-10-17','2020-10-19'))) +
geom_text(aes(label=Number), vjust = -0.5) +
ylim(0,15)
上面的 MWE 生成下面的图。
无论我使用xlim()
还是scale_x_date()
都会出现同样的问题。
我同意处理此问题的最佳方法是过滤您的数据。您可以使用 dplyr
library(dplyr)
TestData %>%
filter(Date>='2020-10-17' & Date<='2020-10-19') %>%
ggplot(aes(x = Date, y = Number, fill = 'red', col = 'white')) +
geom_col() +
geom_text(aes(label=Number), vjust = -0.5) +
ylim(0,15)
从技术上讲,您也可以使用秤来完成,但这有点麻烦。您只需要稍微调整端点以过滤掉其他 geom 以确保它们被丢弃。
ggplot(TestData, aes(x = Date, y = Number, fill = 'red', col = 'white')) +
geom_col() +
scale_x_date(limits=as.Date(c('2020-10-17','2020-10-19')) + c(-.5, .5)) +
geom_text(aes(label=Number), vjust = -0.5) +
ylim(0,15)
这仍然会生成有关丢弃值的警告消息。