无法绘制 R 中数据的条形图
Cannot plot the barplot of the data in R
我是R语言的新手,正在对某个数据集进行分析。
下面是我的数据框。
我想在 R 中绘制类似的东西(在条形图下方给出)。我知道如何在 python 中做到这一点,但作为 R 的初学者,我不知道如何去做。提前致谢!
一个解决方案是使用 ggplot2 包
ggplot2
是 tidyverse
软件包系列的一部分,tidyr
和 dplyr
也是,我也在下面的示例中使用它们。
%>%
(管道)运算符从 dplyr
导入,并将一个函数的输出传递给另一个函数的第一个参数。简而言之,x %>% f(y)
等同于 f(x,y)
.
如果没有可重现的示例,我不能保证这会起作用,但我会向您介绍它,以便您了解步骤。
require(ggplot2)
require(dplyr)
require(tidyr)
### Format the data ------------------------------------------------------
formattedData <-
myData %>%
select(product_title, max_rating, min_rating) %>% #select only the columns we need
## Pivot longer takes us from this:
# |product_name | min_rating | max_rating|
# |"foo" | 1 | 325 |
# to this:
# |product_name | name | value |
# |"foo" |"min_rating"| 1 |
# |"foo" |"max_rating"| 325 |
# That's the data format ggplot() needs to do its stuff
pivot_longer(cols = all_of(c("max_rating", "min_rating")))
### Plot the data -------------------------------------------------------
ggplot(formattedData, # The data is our new 'formattedData' object
# aesthetics - X axis is product_title, y axis is value, # bar colour is name
aes(x = product_title, y = value, fill = name)) +
geom_bar(stat = "identity", position = "dodge") + # using the values, rather than counting elements
scale_fill_manual(values = c("max_rating" = "orange", "min_rating" = "blue") + # custom colours
ggtitle("Top products ratings") +
ylab("Ratings")
我是R语言的新手,正在对某个数据集进行分析。
下面是我的数据框。
我想在 R 中绘制类似的东西(在条形图下方给出)。我知道如何在 python 中做到这一点,但作为 R 的初学者,我不知道如何去做。提前致谢!
一个解决方案是使用 ggplot2 包
ggplot2
是 tidyverse
软件包系列的一部分,tidyr
和 dplyr
也是,我也在下面的示例中使用它们。
%>%
(管道)运算符从 dplyr
导入,并将一个函数的输出传递给另一个函数的第一个参数。简而言之,x %>% f(y)
等同于 f(x,y)
.
如果没有可重现的示例,我不能保证这会起作用,但我会向您介绍它,以便您了解步骤。
require(ggplot2)
require(dplyr)
require(tidyr)
### Format the data ------------------------------------------------------
formattedData <-
myData %>%
select(product_title, max_rating, min_rating) %>% #select only the columns we need
## Pivot longer takes us from this:
# |product_name | min_rating | max_rating|
# |"foo" | 1 | 325 |
# to this:
# |product_name | name | value |
# |"foo" |"min_rating"| 1 |
# |"foo" |"max_rating"| 325 |
# That's the data format ggplot() needs to do its stuff
pivot_longer(cols = all_of(c("max_rating", "min_rating")))
### Plot the data -------------------------------------------------------
ggplot(formattedData, # The data is our new 'formattedData' object
# aesthetics - X axis is product_title, y axis is value, # bar colour is name
aes(x = product_title, y = value, fill = name)) +
geom_bar(stat = "identity", position = "dodge") + # using the values, rather than counting elements
scale_fill_manual(values = c("max_rating" = "orange", "min_rating" = "blue") + # custom colours
ggtitle("Top products ratings") +
ylab("Ratings")