簡體   English   中英

在 R 中繪制散點圖

[英]Plotting a scatter plot in R

由於此處所述的問題,我有一個數據結構。

代碼:

df <- tibble::tribble(~person, ~age, ~height,  
                      "John", 1, 20,  
                      "Mike", 3, 50,  
                      "Maria", 3, 52,  
                      "Elena", 6, 90,  
                      "Biden", 9, 120)  
df %>%
  mutate(
    age_c = cut(
      age,
      breaks = c(-Inf, 5, 10),
      labels = c("0-5", "5-10"),
      right = TRUE
    ),
    height_c = cut(
      height,
      breaks = c(-Inf, 50, 100, 200),
      labels = c("0-50", "50-100", "100-200"),
      right = TRUE
    )
  ) %>%
  count(age_c, height_c, .drop = FALSE)

# A tibble: 6 x 3
  age_c height_c     n
  <fct> <fct>    <int>
1 0-5   0-50         2
2 0-5   50-100       1
3 0-5   100-200      0
4 5-10  0-50         0
5 5-10  50-100       1
6 5-10  100-200      1

現在我正在嘗試創建一個散點圖,但我有一個問題,代碼似乎沒有注意到 X 和 Y 軸上的值正在重復。 相反,它正在重復它們。 所以,我希望我的 x 軸有兩個值 0-5 和 5-10(我得到的是 0-5,0-5,0-5,5-10,5-10,5-10),和 y 軸三個值 0-50、50-100 和 100-200(相反,我有兩個系列)。

我用來繪制的代碼:

ggplot(df, aes(x=age_c, y=height_c))

預期圖(其中圓圈的大小將基於 N 的值):
陰謀

如果你繪制計數 data.frame 它應該工作:

countdf = df %>%
  mutate(
    age_c = cut(
      age,
      breaks = c(-Inf, 5, 10),
      labels = c("0-5", "5-10"),
      right = TRUE
    ),
    height_c = cut(
      height,
      breaks = c(-Inf, 50, 100, 200),
      labels = c("0-50", "50-100", "100-200"),
      right = TRUE
    )
  ) %>%
  count(age_c, height_c, .drop = FALSE)


countdf %>% 
filter(n>0) %>% 
ggplot(aes(x=age_c,y=height_c,size=n)) + 
geom_point() + 
scale_size_continuous(range=c(5,10),breaks=c(1,2))

在此處輸入圖片說明

暫無
暫無

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

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