Как отобразить на графике данные, сгруппированные фактором, но не как коробчатая диаграмма

В R, учитывая вектор

casp6 <- c(0.9478638, 0.7477657, 0.9742675, 0.9008372, 0.4873001, 0.5097587, 0.6476510, 0.4552577, 0.5578296, 0.5728478, 0.1927945, 0.2624068, 0.2732615)

и фактор:

trans.factor <- factor (rep (c("t0", "t12", "t24", "t72"), c(4,3,3,3)))

Я хочу создать график, где точки данных сгруппированы, как определено фактором. Таким образом, категории должны быть на оси X, значения в той же категории должны иметь ту же координату x.

Просто выполнение plot(trans.factor, casp6) делает почти, что я хочу, это производит коробчатую диаграмму, но я хочу видеть отдельные точки данных.

12
задан Jilber Urbina 1 January 2014 в 18:03
поделиться

3 ответа

require(ggplot2)
qplot(trans.factor, casp6)
13
ответ дан 2 December 2019 в 05:03
поделиться

Вы можете сделать это с помощью ggplot2 , используя фасетов . Когда я прочитал «Я хочу создать график, на котором точки данных сгруппированы в соответствии с определением фактора» , первое, что мне пришло в голову, были фасеты .

Но в этом конкретном случае более быстрой альтернативой должно быть:

plot(as.numeric(trans.factor), casp6)

И вы можете позже поиграть с опциями сюжета ( type , fg , bg . ..), но я рекомендую придерживаться ggplot2 , так как он имеет гораздо более чистый код, отличную функциональность, вы можете избежать избыточного графика ... и т. д. и т. д.

Узнайте, как работать с факторами. Вы получили гистограмму при оценке участка (trans.factor, casp6) , потому что trans.factor был классом фактора (по иронии судьбы, вы даже назвали его в таком поместье ) ... и trans.factor , как таковой, был объявлен перед как непрерывная (числовая) переменная в функции plot () ... следовательно, ] plot () «чувствует» необходимость разбить данные на подмножества и нарисовать коробчатую диаграмму на основе каждой части (если вы сначала объявите непрерывную переменную, вы получите обычный график, верно?). ggplot2 , с другой стороны, интерпретирует фактор по-другому ... как «обычная» числовая переменная (это означает синтаксис, предоставленный Джонатаном Чангом ], вы должны указать geom , когда делаете что-то более сложное в ggplot2 ).

Но давайте предположим, что у вас есть одна непрерывная переменная и фактор, и вы хотите применить гистограмму к каждой части непрерывной переменной, определяемой уровнями факторов. Здесь все усложняется с возможностями базового графа.

# create dummy data
> set.seed(23)
> x <- rnorm(200, 23, 2.3)
> g <- factor(round(runif(200, 1, 4)))

Используя базовые графики ( package: graphics ):

par(mfrow = c(1, 4))
tapply(x, g, hist)

ggplot2 way:

qplot(x, facets = . ~ g)

Попробуйте сделать это с помощью графики в одной строке кода (точки с запятой и пользовательские функции считаются мошенничеством!):

qplot(x, log(x), facets = . ~ g)

Будем надеяться, что я не наскучил тебе до смерти, а помог тебе!

С уважением,
aL3xa

4
ответ дан 2 December 2019 в 05:03
поделиться

Вы можете приблизиться к тому, что хотите, используя решетчатую графику, выполнив:

library(lattice)    
xyplot(casp6 ~ trans.factor, 
       scales = list(x = list(at = 1:4, labels = levels(trans.factor))))
3
ответ дан 2 December 2019 в 05:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: