簡體   English   中英

R 語言中的箱線圖問題

[英]Issue on boxplot in R language

請問如何分配這四到兩個包含男性和女性脈搏計的箱線圖。

islands = read.csv('Data.csv')
boxplot(islands$Pulse.meter.First..0m, islands$Pulse.meter.25m, islands$Pulse.meter.Second..0m, islands$Pulse.meter.25m.1)

boxplot(islands$Pulse.meter.25m ~ islands$Sex)

可以區分它們,但不能同時為其中四個工作

在此處輸入圖像描述

想要這樣的箱線圖

在此處輸入圖像描述

這是一個使用隨機數據的示例,因為您沒有提供要下載的數據。 關鍵是首先將數據從“寬”格式(每個值一列)轉換為“長”格式,其中所有值都在同一列中,另外還有一個 label 列。 然后interaction function 可用於創建脈搏計類型和性別之間的交互。

# example data with random values
islands <- data.frame(Sex = rep(c('Male', 'Female'), 15),
                      Pulse.meter.First..0m = rnorm(30, mean = 2),
                      Pulse.meter.25m = rnorm(30, mean = 1),
                      Pulse.meter.Second..0m = rnorm(30, mean = 3),
                      Pulse.meter.25m.1 = rnorm(30, mean = 4))
                      
# reshape from wide to long
islands_long <- reshape(islands,
                        direction = "long",
                        varying = 2:5,
                        v.names = "value",
                        times = names(islands)[2:5],
                        timevar = 'measurement')

# plot the boxplot, 'cex.axis' decrease the font size so all the x-axis labels are visible
boxplot(value ~ interaction(Sex, measurement), data = islands_long, pars=list(cex.axis=0.5))

這會產生:

在此處輸入圖像描述

library(ggplot2)
library(dplyr)
library(tidyverse)

df <- data.frame(
  Gender = sample(c("Male", "Female"), 20, replace = TRUE),
  Pulse.meter.First..0m  = sample(10:60, 20, replace = FALSE),
  Pulse.meter.25m  = sample(30:60, 20, replace = FALSE),
  Pulse.meter.Second..0m = sample(30:60, 20, replace = FALSE),
  Pulse.meter.25m.1  = sample(10:60, 20, replace = FALSE)
)


df <- df %>%
  group_by(Gender) %>%
  pivot_longer(cols = Pulse.meter.First..0m:Pulse.meter.25m.1, names_to = "Pulse_meter", values_to = "Count") %>%
  unite("Groups", Gender:Pulse_meter)



df$Groups <- factor(df$Groups, levels=c("Female_Pulse.meter.First..0m", "Male_Pulse.meter.First..0m",
                                        "Female_Pulse.meter.25m","Male_Pulse.meter.25m",
                                        "Female_Pulse.meter.Second..0m","Male_Pulse.meter.Second..0m",
                                        "Female_Pulse.meter.25m.1","Male_Pulse.meter.25m.1"))
 

ggplot(data = df, aes(x= Groups, y = Count)) +
  geom_boxplot() +
  scale_x_discrete(labels=c("(F,0m)","(M,0m)","(F,25m)","(M,25m)", "(F,second_0m)", "(M,second_0m)",
                            "(F,25m.1)","(M,25m.1)")) +
  labs(y="Counts") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

在此處輸入圖像描述

暫無
暫無

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

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