簡體   English   中英

我怎樣才能將 plot 和 dataframe 與 ggplot2 結合起來?

[英]How can I bar plot a dataframe with ggplot2?

所以我正在嘗試創建一個條形 plot 來表示兩種不同的金額,一個表示使用 coin_type_1 進行的交易的數量,另一個表示使用 coin_type_2 的交易。 截至目前,我有這個:

  montoTipo1 <- df %>%
  group_by(MONEDA, Monto) %>%
  filter(MONEDA=="1") %>%
  data.frame() %>%
  summarise(Monto_Tipo1 = sum(Monto, na.rm = TRUE))

montoTipo2 <- df %>%
  group_by(MONEDA, Monto) %>%
  filter(MONEDA=="2") %>%
  data.frame() %>%
  summarise(Monto_Tipo2 = sum(Monto, na.rm = TRUE))

nombres.MontosTipo <- c("Tipo de moneda 1","Tipo de moneda 2")
montosTipo <- c(montoTipo1[[1]], montoTipo2[[1]])
df.MontosTipo <- data.frame(row.names = nombres.MontosTipo, montosTipo) %>%
  rename("Montos totales" = montosTipo)

output 是:

df.MontosTipo
                 Montos totales
Tipo de moneda 1     1617682625
Tipo de moneda 2      248738139

我怎樣才能 plot 所以在我的 x 軸上出現“Tipo de moneda”數據,並且繪制的值是我在 dataframe 中的值?

正如@RuiBarradas 已經指出的那樣,您希望將行名更改為一列,我們可以使用tibble::rownames_to_column來完成。 在這里,我還提供了一些額外的選項來進一步自定義圖表。 我選擇了一種淺色調來填充每個條。 我轉換了科學記數法,但如果你想要沿 y 軸的科學記數法,那么你可以在這里刪除最后一行(即scale_y_continuous(labels = comma) )。

library(tidyverse)
require(scales)

df.MontosTipo %>% 
  tibble::rownames_to_column("nombres.MontosTipo") %>% 
  ggplot(aes(x = nombres.MontosTipo, y = `Montos totales`, fill = factor(`Montos totales`))) + 
  geom_col( ) +
  scale_fill_hue(c = 40) +
  theme_bw() +
  theme(legend.position="none") +
  xlab("Nombres") +
  ylab("Montos Totales") +
  scale_y_continuous(labels = comma)

Output

在此處輸入圖像描述

數據

df.MontosTipo <-
  structure(
    list(`Montos totales` = c(1617682625, 248738139)),
    row.names = c("Tipo de moneda 1",
                  "Tipo de moneda 2"),
    class = "data.frame"
  )

您可以以更簡單的方式到達相同的 data.frame

df.MontosTipo <- df %>%
  filter(MONEDA=="2" | MONEDA=="1") %>%
  group_by(MONEDA, Monto) %>%
  group_by(MONEDA) %>% 
  summarise('Montos Totales'= sum(Monto, na.rm = TRUE)) %>% 
  rename("Tipo de moneda" = "MONEDA")

使用您當前的 data.frame 並且您已經擁有tidyverse然后您可以運行

df.MontosTipo <- 
  df.MontosTipo %>% 
  rownames_to_column("Tipo de moneda")

然后,由於Tipo de moneda保存在一個變量中,您可以使用美學映射在ggplot內將其調用到您的 X 軸。

ggplot(df.MontosTipo,
       aes(x = `Tipo de moneda`, y = `Montos Totales`, 
           fill = factor(`Tipo de moneda`))) +
  geom_col()

最后的想法是,有時以var_name形式創建變量比var name更容易,因此在函數內部調用它們時不必添加刻度線。 此外, geom_bar()不接受 X 和 Y 美學,所以我寧願使用geom_bar()

條形圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM