В 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)
делает почти, что я хочу, это производит коробчатую диаграмму, но я хочу видеть отдельные точки данных.
Вы можете сделать это с помощью 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
Вы можете приблизиться к тому, что хотите, используя решетчатую графику, выполнив:
library(lattice)
xyplot(casp6 ~ trans.factor,
scales = list(x = list(at = 1:4, labels = levels(trans.factor))))