ggplot geom_col 的轴值问题

problem with axis values at ggplot geom_col

我是 R 的新手,现在我处理一个长数据集有一段时间了,最​​后得到 2 列(国家和利润):

y <- data.frame(tapply(sub$Profit, sub$Country, sum)) 
y <- rename(y, Profit = tapply.sub.Profit..sub.Country..sum.)

y <- cbind(Country = rownames(y), y)
rownames(y) <- 1:nrow(y)

y <-  y %>% arrange(+Profit)
y

0         Country    Profit
1        Slovakia  56264.49
2      Luxembourg  59903.52
3         Ireland 104150.35
4          Sweden 109208.67
5         Finland 137918.93
6          Norway 159719.46
7        Portugal 199447.42
8     Netherlands 214398.10
9     Switzerland 248677.00
10 Czech Republic 286430.06
11        Denmark 305669.83
12        Belgium 316599.95
13         Poland 349640.12
14        Austria 397716.80
15          Italy 433439.35
16          Spain 520474.14
17         France 525408.81
18 United Kingdom 565622.63
19        Germany 643194.62

现在我正在尝试用它绘制条形图,但我很挣扎。

graph_country_profit <- ggplot(y, aes(x=Profit,y=Country)) + geom_col(width = 0.5, aes(fill="Profit"))
    
graph_country_profit

但图表排在第一位。粉红色,第二。用奇怪的数字。我该如何解决?任何解释为什么会这样?也可以订购 increasing/decreasing?

感谢您的宝贵时间和帮助!

library(tidyverse)
library(scales)
ggplot(df, aes(y=Profit,x=fct_reorder(Country, Profit), fill=Profit)) + 
  geom_col(width = 0.5)+
  coord_flip()+
  scale_fill_gradient(low = "blue", high = "red", name = "Trade Value", labels = comma) +
  scale_y_continuous(labels = function(x) format(x, scientific = FALSE))+
  theme_classic()

为什么你的图是粉红色的答案是因为你在 aes 函数中引用了 Profit。这是我重新创建你的数据集:

data <- tibble(
  Country = c(
    "Slovakia", "Luxembourg", "Ireland", "Sweden", "Finland", "Norway", "Portugal",
    "Netherlands", "Switzerland", "Czech Republic", "Denmark", "Belgium", "Poland",
    "Austria", "Italy", "Spain", "France", "United Kingdom", "Germany"
  ),
  Profit = c(56264.49, 59903.52, 104150.35, 109208.67, 137918.93, 159719.46, 199447.42,
             214398.10, 248677.00, 286430.06, 305669.83, 316599.95, 349640.12, 397716.80,
             433439.35, 520474.14, 525408.81, 565622.63, 643194.62)
)

这是我运行你的代码:

ggplot(
  data, 
  aes(
    x=Profit,
    y=Country)
  ) + 
  geom_col(
    width = 0.5, 
    aes(
      fill = "Profit"
    )
  )

让 运行 再次使用它,但这次取消引用 aes 函数中的 fill 参数

ggplot(
  data, 
  aes(
    x=Profit,
    y=Country)
  ) + 
  geom_col(
    width = 0.5, 
    aes(
      fill = Profit
    )
  )

现在每个柱状图都按利润着色。

发生这种情况的原因是美学功能正在寻找一个变量来为您的情节着色。按照惯例,您不会用引号将它们括起来。如果您用引号将它括起来,它不会将其识别为变量,而只会将其视为随机字符串。一个随机字符串不包含关于哪个条应该以什么方式着色的信息,因此 ggplot 只是为每个条着色相同的颜色。

“奇怪的数字”,我假设你的意思是“2e+05”,如果你以前没见过的话,这就是 2x10^5 或 200000。 TarJae 的另一个答案显示了如何使用 scale_y_continuous 解决此问题以及如何重新排序这些因素。