我想创建一个包含负值和正值的条形图,如下图所示(第一张图),其中中间有一条线0。但是,我创建的条形图中的条形都是垂直显示的(第二张图)。
我可以知道如何使我的条形图(图2)与图1中的条形图相似吗?我的代码:
ggplot(fuel_trend, aes(fuel_type, changes)) + geom_col(position = "identity")
非常感谢。
8zzbczxx1#
由于您在问题中没有提供任何数据,我尝试重新创建您的数据。如果您的数据编码为数字,这应该不是问题,如下所示。
#### Load Tidyverse #### library(tidyverse) #### Recreate Data #### fuel_type <- c("DIESEL", "DIESEL/ELECTRIC", "LPG", "PETROL", "PETROL/ELECTRIC") changes <- c(-1097.82, 92.96, 59.35, -55.15, 88.04) df <- data.frame(fuel_type, changes) #### Plot #### df %>% ggplot(aes(x=fuel_type, y=changes))+ geom_col()
然而,您的changes变量可能编码错误。这里我展示了相同的图,但将数据编码为因子。如果您的变量编码为字符,也可能出现这种情况。
changes
#### Coded as Factor #### df %>% ggplot(aes(x=fuel_type, y=factor(changes)))+ geom_col()
要解决这个问题,可以更改数据框中的数据类(这里我将其保存为df2:
df2
df2 <- df %>% mutate(changes = as.numeric(changes))
...或使用as.numeric将其绘制为数值,如使用原始df数据框:
as.numeric
df
df %>% ggplot(aes(x=fuel_type, y=as.numeric(changes)))+ geom_col()
1条答案
按热度按时间8zzbczxx1#
由于您在问题中没有提供任何数据,我尝试重新创建您的数据。如果您的数据编码为数字,这应该不是问题,如下所示。
然而,您的
changes
变量可能编码错误。这里我展示了相同的图,但将数据编码为因子。如果您的变量编码为字符,也可能出现这种情况。要解决这个问题,可以更改数据框中的数据类(这里我将其保存为
df2
:...或使用
as.numeric
将其绘制为数值,如使用原始df
数据框: