I've been using the brewer.pal(11, "Spectral")[1:3]
to color my bar plot. However, I'm not able to select non-contiguous colors on the scale e.g. I want the first, second and eighth colors on the Spectral scale but I don't know how to get them..., the option with the array only allows me to indicate two values.
This colors will then be the filling for my bars, see below Basically, I would like to keep the first two column bars of the same tone and change the third one using the 8th color from the scale Spectral (should be a greenish tone). Code below
library(readxl)
library(scales)
library(ggdark)
library(ggpubr)
library(ggplot2)
library(forcats)
library(reshape2)
library(RColorBrewer)
excel_pggb <- read_excel("/media/mat/Extreme SSD/TheUniversityOfFerrara/2°Year/pangenome_assembly_R.xlsx") # PGGB tab performance
## excel_mcCACTUS <- read_excel("/media/mat/Extreme SSD/TheUniversityOfFerrara/2°Year/pangenome_assembly_R.xlsx", 2) # mc-CACTUS tab performance
df_pggb <- data.frame(excel_pggb) # PGGB dataframe
## df_mcCACTUS <- data.frame(excel_HG005) # mc-CACTUS dataframe
df_pggb$tool_used <- factor(df_pggb$tool_used, levels=c('wfmash', 'seqwish', 'smoothxg')) # order of tools pggb
df_pggb$aspect <- factor(df_pggb$aspect, levels=c('real_timeH', 'cpu_timeH', 'peak_memGB')) # order of aspects pggb
## df_mcCACTUS$tool_used <- factor(df_mcCACTUS$tool_used, levels=c('', '', '', '')) # order of tools mc-CACTUS
## df_mcCACTUS$aspect <- factor(df_mcCACTUS$aspect, levels=c('real_timeH', 'cpu_timeH', 'peak_memGB')) # order of aspects pggb
df2 <- with(df_pggb, df_pggb[order(No_of_threads, tool_used, aspect),]) # collapse threads based on number used (PGGB)
## df3 <- with(df_mcCACTUS, df_mcCACTUS[order(No_of_threads, tool_used, aspect),]) # collapse threads based on number used (mc-CACTUS)
### PLOT performance of different tools of the PGGB builder
test_on_pggb <-
ggplot(df_pggb, aes(x=No_of_threads, y=value, fill=aspect)) + geom_col(position='dodge', width=.6, alpha=.6, color='black')
ggplot(df2, aes(x=tool_used, y=value, fill=aspect)) + geom_col(position='dodge', width=.6, alpha=.6, color='black') + facet_wrap(~No_of_threads, scales='free', nrow=1) + theme_bw() +
theme(plot.title=element_text(face='bold.italic', hjust=.5), legend.title=element_text(face='italic'), legend.position='bottom', legend.direction='horizontal') +
scale_fill_manual(values=brewer.pal(11, "Spectral")[1:8], labels=c('real_time_hours', 'CPU/h', 'RAM in GB')) + ggtitle('PGGB_performance_by_tool') +
guides(fill=guide_legend(title='execution_aspect', title.position='top', title.hjust=.5))
I tried several combination of numbers to fit in the array separated by comma or column but, unfortunately, none of them worked...
Use c()
to specify the indices in a vector:
brewer.pal(11, "Spectral")[c(1, 2, 8)]
[1] "#9E0142" "#D53E4F" "#ABDDA4"