无法使用ggplot查看facet_wrap中的y值

oknwwptz  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(105)

查看ISRL包中的Carseats数据,创建条形图。x值将是一个因子ShelveLoc,每个图表代表数据集中的每一列。数据的头部:

library(tidyverse)
library(ISLR)
head(Carseats)

  Sales CompPrice Income Advertising Population Price ShelveLoc Age Education Urban  US
1  9.50       138     73          11        276   120       Bad  42        17   Yes Yes
2 11.22       111     48          16        260    83      Good  65        10   Yes Yes
3 10.06       113     35          10        269    80    Medium  59        12   Yes Yes
4  7.40       117    100           4        466    97    Medium  55        14   Yes Yes
5  4.15       141     64           3        340   128       Bad  38        13   Yes  No
6 10.81       124    113          13        501    72       Bad  78        16    No Yes

字符串
绘制ShelveLoc与其他列的关系图可以打印图形,但不显示y值:

ISLR::Carseats %>% 
  gather(-ShelveLoc,  key = "var", value = "value") %>% 
  ggplot(aes(x = ShelveLoc, y = value)) +
  geom_col() +
  facet_wrap(~var, scales = "free")


这就是它的样子-条形图很好,但y值不清楚。
x1c 0d1x的数据
如何清楚地显示y值?

pcww981p

pcww981p1#

这是一个阶级问题。使用gather不会得到错误。使用较新的pivot_longer会给予以下错误:

Error in `pivot_longer()`:
! Can't combine `Sales` <double> and `Urban` <factor<afba0>>.

字符串
为了克服将除ShelveLoc以外的所有突变为numeric

library(dplyr)
library(tidyr)
library(ggplot2)
library(ISLR)

Carseats %>% 
  mutate(across(-ShelveLoc, as.numeric)) %>% 
  pivot_longer(-ShelveLoc, names_to = "var", values_to = "value") %>%
    ggplot(aes(x = ShelveLoc, y = value)) +
    geom_col() +
    facet_wrap(~var, scales = "free")


的数据

相关问题