Вы можете добавить alpha = 0.5
к своему выражению geom_bar()
, чтобы сделать столбики прозрачными. Это позволит увидеть оба бара. Добавление этого оператора alpha
и ничего больше не даст того, что вы ищете, чтобы сделать видимыми обе накладные полосы. Цвета, однако, затрудняют просмотр двух разных полос.
Другой (и, возможно, лучший) вариант - изменить порядок создания графика. Если я правильно помню, ggplot
построит столбцы в алфавитном или числовом или факторном порядке. Здесь ваши значения expression
равны c("Down", "Up")
, а сначала отображается "Down"
. Если вы заставите "Up"
быть нанесенным в первую очередь, вы также можете решить эту проблему.
library(dplyr)
library(ggplot2)
dat <-
read.table(text = "condition hours expression freq_genes
1 tofde 9 up 27
2 tofde 12 up 92
3 tofde 15 up 628
17 tofde 9 down 0
18 tofde 12 down 1
19 tofde 15 down 0
33 tofp 9 up 2462
34 tofp 12 up 786
35 tofp 15 up 298
49 tofp 9 down 651
50 tofp 12 down 982
51 tofp 15 down 1034
65 tos 0 up 27
66 tos 3 up 123
67 tos 6 up 752
81 tos 0 down 1
82 tos 3 down 98
83 tos 6 down 594") %>%
mutate(expression2 = ifelse(expression == "up", 1, 2))
dat %>%
ggplot(aes(x = hours, y = freq_genes, group = condition,
fill = factor(expression2, labels=c("Up", "Down")))) +
labs(fill="Expression") +
geom_bar(stat = "identity", position = "dodge", width = 2.5, alpha = 0.5) +
scale_fill_manual(values=c("#9ecae1", "#3182bd")) +
xlab("Time (Hours)") +
scale_x_continuous(breaks = seq(min(dat$freq_genes),
max(dat$freq_genes),
by = 3)) +
ylab("Gene Frequency") +
facet_grid(. ~ condition, scales = "free") +
theme_bw() +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
legend.position = "bottom",
axis.text.x = element_text(angle = 90))
Здесь я создал новый столбец под названием expression2
, который является просто числовой версией expression
. Я изменил переменную fill
в aes()
, чтобы она соответствовала этим новым меткам. Я оставил цвета в scale_fill_manual()
так же, как в вашем первоначальном утверждении, и сохранил значение alpha
. «Вниз» наносится поверх «Вверх», но, сохраняя одинаковые цвета со значением alpha
, обе полосы легче увидеть. Вы можете поиграть с легендой, чтобы отобразить «Вниз» перед «Вверх», если это необходимо.
Обратите внимание, что предоставление машиночитаемых данных имеет большое значение, позволяя другим помочь вам. Попробуйте использовать dput()
для вывода ваших данных в следующий раз, а не вставлять их. Также обратите внимание, что вы можете «связать» вместе ggplot()
операторы с +
. Это делает код намного компактнее и легче для чтения.
Одно использование было бы как задача планового техобслуживания, которая связана с веб-приложением. Вы сможете пользоваться библиотеками и функциональностью из веб-приложения.
Я предполагаю, что другое преимущество - то, что, если Вы знакомы с php веб-разработкой, затем вырубая быстрый скрипт CLI в php, может быть быстрый способ сделать что-то быстро.
Мы используем CLI PHP для задач крона как посылание электронных писем, закрытие старых обсуждений и почтовых очередей отсылки через веб-серверы. Можно также использовать его для одноразовых проектов как парсинг плоского текстового файла прямо в базу данных. Это не что-то, что Вы хотите быть видимой сетью. Эти задачи имеют преимущество совместного использования библиотек, которые Вы создали для своего веб-сайта, такого как электронные письма отправки и доступ к базе данных.
Первой вещью, которая приходит на ум, является приложение PHP, которое Вы могли легко представить как демон в сочетании с планировщиком задач, чтобы постоянно сделать определенные обновления, потому что Вы можете/, хотят зависеть от пользовательского действия для инициирования выполнения приложения - но Вам действительно не нужен интерактивный CLI для этого вида материала, который является Вами, мог просто использовать доступный инструмент планирования задач через что-то другое, чем CLI и позволить ему сделать всю грязную работу.
Основной причиной была бы ГРУША, и я думаю, что это - когда PHP начинает становиться действительно интересным. Это - необходимость для симфонии, но можно действительно видеть, что он помогает уже автоматизировать работу с языком знакомый с - никакая потребность в изучении Python, жемчуга, и т.д. и это, плюс который ГРУШЕВЫЕ сценарии не должны находиться в cgi репозитории (некоторые общие хосты очень строги).
Так как все остальное будь равно, используйте язык, который Вы знаете лучше всего. И для большого служебного программирования, все остальное равно.
В большинстве таких случаев VBScript или Powerscript, вероятно, по крайней мере, как подходящие.
Расширение проекта, доступного только для Интернета, до командная строка;
Лучший язык сценариев для работы - почти всегда тот, который вы знаете лучше всего. Так что, если вы знаете PHP лучше, чем VBScript, это будет вашим самым большим преимуществом. Я написал ряд утилит командной строки и сценариев обслуживания, которые многие другие люди, вероятно, написали бы на PERL, BASH или даже на Python, но я просто не знаю эти языки почти так же хорошо, как PHP.