Как обернуть текст метки в R? - PullRequest
1 голос
/ 25 марта 2019

Я работаю на горизонтальной полосе с данными опроса.Метки для оси Y будут вопросами из опроса.Вопросы довольно длинные, поэтому мне нужно обернуть текст каждого вопроса так, чтобы он отображался в 2-3 строчках.Может кто-нибудь поделиться, как наиболее просто сделать это в базе R?

counts <- c(5, 4.9, 4.4, 4.8, 4.9, 5.0, 4.9, 4.9, 4.9)

barplot(counts, col=c("deepskyblue2"), border = NA,  
        family="Arial", horiz = T, xlim = range(0,6))

Мне нужно, чтобы надписи на каждой из них были обернуты в 2-3 строки.

1 Ответ

4 голосов
/ 25 марта 2019

Вот очень сырое решение и не полностью базовый R:

counts <- c(5, 4.9, 4.4, 4.8, 4.9, 5.0, 4.9, 4.9, 4.9)
library(stringr) # for the function str_wrap()
library(magrittr) # just for the pipe %>%, not strictly necessary
names(counts) <- c(
  "I'm working on a horizontal",
  "barplot with survey data.",
  "The labels for the y axis",
  "will be questions from the survey.",
  "The questions are rather long, and",
  "therefore I need to wrap the text",
  "of each question so that it appears",
  "on 2-3 lines. Can someone share",
  "how to most simply do this in base R?") %>% str_wrap(width = 20)

par(mai=c(1,2,1,1)) # make space for the label
barplot(counts, col=c("deepskyblue2"), border = NA, family="Arial", horiz = T, xlim = range(0,6), las = 2)

enter image description here

PS.если база R является строгим требованием, вы должны иметь возможность кодировать что-то похожее на str_wrap().

РЕДАКТИРОВАТЬ

Вы можете определить свою собственную функцию на основе strwrap() из базы R и отбросьте зависимость stringr:

our_strwrap <- function(x) lapply(strwrap(x, width = 20, simplify= FALSE), paste, collapse = "\n")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...