首页 > 解决方案 > 如何不使用箱线图压缩数据?

问题描述

这是我必须分配给 boxplot() 的任务,但我不知何故压缩了数据。我是 R 新手 :(

我想问题是因为 x 轴标签太长并且没有垂直放置,所以我尝试过但失败了(基于这个Inserting labels in box plot in R on a 45 degree angle?

examples <- read.csv("mov.development.csv", sep="\t")
library(dplyr)

movies_rated_67_times <- examples %>%
  group_by(movie) %>%
  summarize(count=n(), avg_rating=mean(rating))%>%
  filter(count == 67)

boxplot_data <- examples %>%
  filter(movie %in% movies_rated_67_times$movie) %>%
  select(title, rating)

boxplot(rating~title,
        data=boxplot_data,
        xlab="Title",
        ylab="Rating", 
        xaxt = "n"
)
text(seq_along(boxplot_data$title), par("usr")[3] - 0.5, labels = names(boxplot_data$title), srt = 90, adj = 1, xpd = TRUE);

我想要这样的情节 在此处输入图像描述

但我得到了这个 https://imgur.com/XV5oZYi

但是对于不太长的不同类型的标签,普通代码可以工作 在此处输入图像描述

正常代码:

examples <- read.csv("mov.development.csv", sep="\t")
library(dplyr)

movies_rated_67_times <- examples %>%
  group_by(movie) %>%
  summarize(count=n(), avg_rating=mean(rating))%>%
  filter(count == 67)

boxplot_data <- examples %>%
  filter(movie %in% movies_rated_67_times$movie) %>%
  select(movie, rating)

boxplot(rating~movie,
        data=boxplot_data,
        xlab="Title",
        ylab="Rating"
)

csv 文件:https ://drive.google.com/file/d/1ODM7qdOVI2Sua7HMHGEfNdYz_R1jhGAD/view?usp=sharing

标签: r

解决方案


将您的标题列从因素转换为字符似乎可以解决它。此外,我会在一些电影名称中插入换行符并减小文本大小,使其适合情节

boxplot_data <- examples %>%
  filter(movie %in% movies_rated_67_times$movie) %>%
  mutate(title = as.character(title)) %>% 
  select(title, rating)

boxplot_data[boxplot_data$title == "Adventures of Robin Hood, The (1938)",]$title <- "Adventures of Robin Hood,\nThe (1938)"
boxplot_data[boxplot_data$title == "Wallace & Gromit: The Best of Aardman Animation (1996)",]$title <- " Wallace & Gromit: The Best of\nAardman Animation (1996)"
boxplot_data[boxplot_data$title == "Bridges of Madison County, The (1995)",]$title <- "Bridges of Madison County,\nThe (1995)"


par(cex.axis = 0.7)
boxplot(rating~title,
        data=boxplot_data,
        xlab="Title",
        ylab="Rating")

推荐阅读