Первый вопрос, который я задал в стеке, и я довольно новичок в R, поэтому, пожалуйста, прошу прощения за любые нарушения этикета. Я рисую 2 сложенных диаграммы области, используя ggplot2. Данные представляют собой события ожидания из базы данных Oracle. Это график настройки производительности. У меня есть несколько вопросов.R - ggplot2, несколько вопросов, несколько взаимосвязанных участков
- Два участка ниже, не построчно правильно, скорее всего, из-за ширины текста в легенде. Есть ли простое решение?
- Эти два графика действительно коррелированы, где верхний график показывает классы ожидания, такие как «CPU» и «User I/O», а нижний график показывает детали конкретных событий ожидания в этих классах. Я хотел бы, чтобы цвета в нижней части были основаны на классе ожидания, так же, как верхний, только разные оттенки этого цвета для определенных событий. Я также открыт для других вариантов, если вам не нравится эта концепция. Передавать много информации. Я ограничил количество событий до 12, чтобы соответствовать цветовой схеме, но есть больше, если она может работать.
- Я хотел бы либо показать более гранулированные тики времени на X, или, возможно, даже затенять внерабочие часы (6 вечера 8 утра) серыми, чтобы лучше понять время суток.
- Существуют ли цветовые схемы с более чем 12 цветами, которые люди обычно используют? Посмотрел пивовар, и это максимум. Я знаю, что могу создать свою собственную, просто любопытную.
Вот мой код:
library(ggplot2)
library(RColorBrewer)
library(gridExtra)
DF_AAS <- read.csv('http://dl.dropbox.com/u/4131944/Permanent/R-Questions/AAS-Plot/DATA_FRAME_AAS.csv', head=TRUE,sep=",",stringsAsFactors=TRUE)
DF_AAS <- within(DF_AAS, snap_time <- as.POSIXlt(snap_times2,
format = "%Y-%m-%d %H:%M:%S"))
DF_AAS[c('snap_times2')] <- NULL
DF_AAS_EVENT <- read.csv('http://dl.dropbox.com/u/4131944/Permanent/R-Questions/AAS-Plot/DF_AAS_EVENT.csv', head=TRUE,sep=",",stringsAsFactors=TRUE)
DF_AAS_EVENT <- within(DF_AAS_EVENT, snap_time <- as.POSIXlt(snap_times2,
format = "%Y-%m-%d %H:%M:%S"))
DF_AAS_EVENT[c('snap_times2')] <- NULL
plot_aas_wait_class <- ggplot()+
geom_area(data=DF_AAS, aes(x = snap_time, y = aas,
fill = wait_class),stat = "identity", position = "stack",alpha=.9)+
scale_fill_brewer(palette="Paired",breaks = sort(levels(DF_AAS$wait_class)))+
scale_y_continuous(breaks = seq(0, max(DF_AAS$aas)+(max(DF_AAS$aas)*.2), 5))+
opts(panel.background = theme_rect(colour = "#aaaaaa"))
plot_aas_event <- ggplot()+
geom_area(data=DF_AAS_EVENT, aes(x = snap_time, y = aas,
fill = wait_class_event),stat = "identity", position = "stack")+
scale_fill_brewer(palette="Paired",breaks = DF_AAS_EVENT$wait_class_event)+
scale_y_continuous(breaks = seq(0, max(DF_AAS_EVENT$aas)+(max(DF_AAS_EVENT$aas)*.2), 5))+
opts(panel.background = theme_rect(colour = "#aaaaaa"))
grid.arrange(arrangeGrob(plot_aas_wait_class, plot_aas_event),heights=c(1/2,1/2),ncol=1)
Мое единственное, что касается этикета, было бы то, что (1) мы обычно просим, чтобы люди ограничивались одним вопросом на вопрос, и (2) мы просим вас предоставить _reproducible_ данные и код. Таким образом, когда мы пишем ответ, мы можем быть _sure_, что он работает так, как вы хотите. В противном случае мы просто догадываемся, и вы просите людей сделать гораздо больше работы. – joran
Что касается (4), то причина, по которой эти палитры ограничены 12 цветами, заключается в том, что использование большего количества считается плохой практикой. Человеческий глаз просто не может отличить, что многие, даже 12, толкают его. Вы можете, конечно, создать свои собственные и делать все, что хотите. – joran
@joran Я предоставил воспроизводимые данные. Read.csv ссылается на общедоступный URL. Если это проблема, сообщите мне. Я решил, что несколько вопросов, вероятно, были плохими, но поскольку я довольно новичок в R, я не знал, может ли кто-то повлиять на ответ на другой. Я нахожусь на стадии «Я не знаю, что я не знаю». Я согласен с вами в отношении количества цветов. Я открыт для других визуализаций, просто не придумал хорошую альтернативу. –