如何使用 ggplot2 绘制数据框?
How can I bar plot a dataframe with ggplot2?
所以我试图创建一个条形图来表示两个不同的金额,一个表示使用 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)
输出为:
df.MontosTipo
Montos totales
Tipo de moneda 1 1617682625
Tipo de moneda 2 248738139
如何在我的 x 轴上绘制“Tipo de moneda”数据并且绘制的值是我在数据框中的值?
正如@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)
输出
数据
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()
所以我试图创建一个条形图来表示两个不同的金额,一个表示使用 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)
输出为:
df.MontosTipo
Montos totales
Tipo de moneda 1 1617682625
Tipo de moneda 2 248738139
如何在我的 x 轴上绘制“Tipo de moneda”数据并且绘制的值是我在数据框中的值?
正如@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)
输出
数据
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()