Fecha de la ultima revisión
## [1] "2026-04-15"


library(tidyverse) # paquete para manipulación de datos
library(ggversa) # paquete con datos
library(janitor) # paquete para limpiar los nombres de las columnas
library(gridExtra) # paquete para organizar los gráficos## # A tibble: 1,365 × 21
## tree_number tree_species dbh plant_number ramet_number distance orientation
## <int> <chr> <dbl> <int> <int> <dbl> <dbl>
## 1 1 E.o 75 1 1 2.47 40
## 2 1 E.o 76 2 1 1.97 50
## 3 2 E.o 76 3 1 1.95 350
## 4 3 E.o 58 4 1 3.24 210
## 5 4 E.o NA 5 1 0.85 80
## 6 5 E.o 59 6 1 2.62 160
## 7 5 E.o 59 7 1 2.82 170
## 8 6 E.o 8 8 1 3.12 245
## 9 7 E.o 11.5 9 1 1.12 208
## 10 8 E.o 8.5 10 1 0.75 360
## # ℹ 1,355 more rows
## # ℹ 14 more variables: number_of_flowers <dbl>, height_inflo <dbl>,
## # herbivory <chr>, row_position_nf <int>, number_flowers_position <int>,
## # number_of_fruits <int>, perc_fr_set <dbl>, pardalinum_or_roseum <chr>,
## # fruit_position_effect <int>, frutos_si_o_no <int>,
## # p_or_r_infl_lenght <chr>, num_of_fruits <int>, species_name <chr>,
## # cardinal_orientation <int>
En ggplot2, las funciones geom_bar() y
geom_histogram() permiten representar datos mediante
conteos, pero no son intercambiables porque cada una está diseñada para
un tipo específico de variable y un modo particular de cálculo.
geom_bar() se emplea cuando la variable en el eje x es
categórica, ya que calcula automáticamente la frecuencia de
observaciones por categoría. En contraste, geom_histogram()
se utiliza para variables continuas, dividiendo el rango de valores en
intervalos (bins) y contando cuántas observaciones caen dentro de cada
uno para representar la distribución. Además, cuando los conteos o
proporciones ya están pre‑calculados, la geometría apropiada es
geom_col(), que simplemente representa los valores
proporcionados. Por ello, la elección entre ambas funciones depende
tanto de la naturaleza discreta o continua de la variable como de si los
conteos deben ser generados por el gráfico o provienen de un resumen
previo.
El gráfico de barras es una herramienta adecuada para representar la frecuencia de ocurrencia de eventos asociados a valores discretos o categóricos, como respuestas “sí/no”, clases taxonómicas, tratamientos experimentales, entre otros. La función geom_bar() genera este tipo de visualización al contar automáticamente cuántas veces aparece cada categoría en el conjunto de datos. La altura de cada barra refleja, por tanto, el número de observaciones correspondientes a la categoría situada en el eje X.
En el siguiente ejemplo, comenzaremos por eliminar los valores
perdidos utilizando la función drop_na(), la cual excluye
todas las filas que contienen valores NA. Posteriormente, emplearemos
nuevamente el conjunto de datos de Dipodium rosea para ilustrar
el uso de geom_bar().
DW$number_of_flowers # Antes de hacer los análisis mira los datos, y vea que hay muchas filas con **NA**, remueve **#** para activar la función. ## [1] 11 19 18 24 25 17 19 14 16 23 14 4 23 21 21 16 NA 13 33 15 17 14 23 30
## [25] 28 18 17 35 13 30 32 21 28 14 14 16 24 15 26 26 20 14 23 24 21 19 26 22
## [49] 19 3 36 32 21 23 23 16 22 13 24 28 28 24 5 9 37 24 18 27 29 24 24 29
## [73] 16 24 18 5 20 12 19 25 NA NA NA 32 21 26 29 22 14 22 21 22 21 8 11 17
## [97] 24 14 23 23 17 10 33 14 12 25 28 27 23 12 17 18 23 22 25 9 18 NA NA NA
## [121] 25 12 13 NA NA NA 27 NA 11 17 NA 32 15 25 27 23 29 24 NA 43 27 33 27 25
## [145] 16 29 NA 17 31 12 7 17 35 19 32 18 22 12 10 15 16 NA 21 14 16 12 34 14
## [169] 17 28 20 23 13 16 27 11 15 28 1 11 6 14 28 26 30 18 26 33 20 20 23 6
## [193] 30 20 21 19 19 31 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [217] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [241] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [265] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [289] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [313] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [337] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [361] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [385] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [409] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [433] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [457] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [481] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [505] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [529] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [553] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [577] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [601] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [625] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [649] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [673] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [697] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [721] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [745] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [769] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [793] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [817] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [841] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [865] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [889] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [913] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [937] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [961] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [985] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [1009] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [1033] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [1057] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [1081] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [1105] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [1129] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [1153] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [1177] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [1201] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [1225] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [1249] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [1273] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [1297] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [1321] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [1345] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 60 60
## # A tibble: 7 × 21
## tree_number tree_species dbh plant_number ramet_number distance orientation
## <int> <chr> <dbl> <int> <int> <dbl> <dbl>
## 1 1 E.o 75 1 1 2.47 40
## 2 1 E.o 76 2 1 1.97 50
## 3 2 E.o 76 3 1 1.95 350
## 4 3 E.o 58 4 1 3.24 210
## 5 4 E.o NA 5 1 0.85 80
## 6 5 E.o 59 6 1 2.62 160
## 7 5 E.o 59 7 1 2.82 170
## # ℹ 14 more variables: number_of_flowers <dbl>, height_inflo <dbl>,
## # herbivory <chr>, row_position_nf <int>, number_flowers_position <int>,
## # number_of_fruits <int>, perc_fr_set <dbl>, pardalinum_or_roseum <chr>,
## # fruit_position_effect <int>, frutos_si_o_no <int>,
## # p_or_r_infl_lenght <chr>, num_of_fruits <int>, species_name <chr>,
## # cardinal_orientation <int>
DW %>%
drop_na(number_of_flowers)%>%
ggplot(aes(number_of_flowers))+
geom_bar(fill="red",color="white")+
xlab("Cantidad de Flores")+
ylab("Frecuencia")+
theme(axis.title=element_text(size=14,face="bold"))
#names(DW)
DW %>% drop_na(pardalinum_or_roseum) %>%
ggplot(aes(pardalinum_or_roseum))+
geom_bar(fill="red",color="white")+
xlab("Especies de Dipodium")+
ylab("Frecuencia")+
theme(axis.title=element_text(size=14,face="bold"))
Se puede cambiar la intensidad del color de las barras usando alpha. los valores pueden variar de 0 a 1, donde 1 es mas intenso el color, aquí se utiliza un alpha=0.3.
## # A tibble: 6 × 21
## tree_number tree_species dbh plant_number ramet_number distance orientation
## <int> <chr> <dbl> <int> <int> <dbl> <dbl>
## 1 1 E.o 75 1 1 2.47 40
## 2 1 E.o 76 2 1 1.97 50
## 3 2 E.o 76 3 1 1.95 350
## 4 3 E.o 58 4 1 3.24 210
## 5 4 E.o NA 5 1 0.85 80
## 6 5 E.o 59 6 1 2.62 160
## # ℹ 14 more variables: number_of_flowers <dbl>, height_inflo <dbl>,
## # herbivory <chr>, row_position_nf <int>, number_flowers_position <int>,
## # number_of_fruits <int>, perc_fr_set <dbl>, pardalinum_or_roseum <chr>,
## # fruit_position_effect <int>, frutos_si_o_no <int>,
## # p_or_r_infl_lenght <chr>, num_of_fruits <int>, species_name <chr>,
## # cardinal_orientation <int>
# [df(fila,columas)]
b=ggplot(DW[!is.na(DW$number_of_flowers),],
aes(number_of_flowers))
b+geom_bar(alpha=.3,
fill="blue",color="white")+
xlab("Posiciones de las \n flores en la inflorescencia")+
ylab("Frecuencia")+
theme(axis.title=element_text(size=14,face="bold"))
Figura: Lepanthes eltoroensis, EL Yunque, Puerto Rico
## [1] "Tree" "Trail" "Distance" "Alt_m" "Angulo"
## [6] "Rango_rad" "Localizacion" "Inclinacion" "DBH" "Plantulas"
## [11] "Juveniles" "Adultos" "T_Num" "Lado_vereda" "lat"
## [16] "long"
## Tree Trail Distance Alt_m Angulo Rango_rad Localizacion Inclinacion DBH
## 1 203 Tw 0 780 260 4.535556 230 50 18.1
## 2 204 Tw 228 783 158 2.756222 220 40 23.2
## 3 205 Tw 38 783 90 1.570000 30 30 10.6
## 4 206 Tw 28 785 355 6.192778 250 40 10.8
## 5 209 Tw 47 790 340 5.931111 260 55 14.1
## 6 210 Tw 7 790 350 6.105556 180 30 11.4
## Plantulas Juveniles Adultos T_Num Lado_vereda lat long
## 1 6 21 5 32 izquierda 18.2875 -65.80417
## 2 7 12 7 26 izquierda 18.2925 -65.80580
## 3 2 2 0 4 derecha 18.2922 -65.80670
## 4 6 21 5 32 izquierda 18.2919 -65.80640
## 5 5 10 0 15 derecha 18.2911 -65.80780
## 6 0 10 8 18 izquierda 18.2914 -65.80780
How to put two ggplot2 plots side by side using the cowplot package in R
Ahora incorporaremos una segunda variable discreta que distingue
entre plantas con frutos y plantas sin frutos, con el
fin de representar sus frecuencias a lo largo de las distintas
posiciones de la flor en la inflorescencia. En el script se observa que
la variable Frutos_si_o_no ha sido convertida en un
factor. Esto es necesario porque, en el archivo original, la presencia o
ausencia de frutos y flores fue codificada numéricamente mediante
valores 1 y 0. Si la columna hubiese utilizado
categorías explícitas como “Sí” o “No”, no sería necesario convertirla
en factor, ya que ggplot2 las reconocería directamente como
categorías. Sin embargo, al tratarse de valores numéricos, es
indispensable especificar que corresponden a clases discretas mediante
factor().
El gráfico resultante presenta ambas categorías discretas
superpuestas (posición por defecto: “stack”), de modo que la frecuencia
del segundo grupo se suma a la del primero, tal como ocurre con
geom_histogram() cuando se utiliza un segundo factor para
apilar las frecuencias. De esta manera, la altura total de cada barra
refleja el número acumulado de plantas para ambas categorías en cada
posición de la inflorescencia.
DW%>%
select(fruit_position_effect,frutos_si_o_no )%>% # Selecciona las variables
drop_na(fruit_position_effect)%>% # Remueve los NA
ggplot(aes(fruit_position_effect))+ # Asigna la variable continua
geom_bar(aes(fill=factor(frutos_si_o_no)))+ # Asigna la variable discreta
xlab("Posiciones de las flores \n en la inflorescencia")+
ylab("Frecuencia")+
theme(axis.title=element_text(size=14,face="bold"))+
scale_fill_manual(values = c("green", "#36211D"))+
scale_color_manual(values = c("yellow", "blue"))
## Tree Trail Distance Alt_m Angulo Rango_rad Localizacion Inclinacion DBH
## 1 203 Tw 0 780 260 4.535556 230 50 18.1
## 2 204 Tw 228 783 158 2.756222 220 40 23.2
## 3 205 Tw 38 783 90 1.570000 30 30 10.6
## 4 206 Tw 28 785 355 6.192778 250 40 10.8
## 5 209 Tw 47 790 340 5.931111 260 55 14.1
## 6 210 Tw 7 790 350 6.105556 180 30 11.4
## Plantulas Juveniles Adultos T_Num Lado_vereda lat long
## 1 6 21 5 32 izquierda 18.2875 -65.80417
## 2 7 12 7 26 izquierda 18.2925 -65.80580
## 3 2 2 0 4 derecha 18.2922 -65.80670
## 4 6 21 5 32 izquierda 18.2919 -65.80640
## 5 5 10 0 15 derecha 18.2911 -65.80780
## 6 0 10 8 18 izquierda 18.2914 -65.80780
Cuando se trabaja con dos variables discretas, como la posición de la
flor en la inflorescencia y la presencia o ausencia de frutos, el
comportamiento por defecto de geom_bar() es apilar las
categorías (posición = “stack”). Sin embargo, en muchas ocasiones es más
informativo comparar los grupos directamente, colocándolos uno al lado
del otro dentro de cada categoría principal del eje X.
Para lograr esta presentación comparativa se utiliza el argumento:
DW%>%
select(fruit_position_effect,frutos_si_o_no )%>%
drop_na(fruit_position_effect)%>%
ggplot(aes(fruit_position_effect))+
geom_bar(aes(fill=factor(frutos_si_o_no)),color="white",
position = "dodge")+
xlab("Posiciones de las flores en la inflorescencia")+
ylab("Frecuencia")+
guides(fill=FALSE)+
theme(axis.title=element_text(size=14,face="bold"))
En el siguiente gráfico exploraremos una alternativa diferente a la
apilación automática que realiza geom_bar() cuando se
trabaja con dos variables discretas. Al utilizar el argumento:
ggplot2 ya no apila automáticamente las barras ni las
coloca una al lado de la otra. En cambio, representa cada barra
exactamente en su posición original, iniciando ambas en cero y
dibujándolas una encima de la otra en el mismo espacio del eje X. En
otras palabras, “identity” instruye a geom_bar() a no
realizar ninguna transformación espacial en la posición de las barras.
El resultado es que cada categoría del factor secundario (por ejemplo,
con frutos y sin frutos) ocupa exactamente el mismo
ancho y la misma ubicación sobre el eje horizontal, lo que conduce a una
superposición gráfica completa. Este comportamiento puede ser útil en
situaciones específicas, como cuando:
se desea comparar dos distribuciones exactamente en el mismo espacio,
se emplea transparencia (alpha) para visualizar la
superposición, se busca resaltar coincidencias o diferencias mediante
colores semitransparentes, o cuando la densidad visual es relevante para
la interpretación.
A continuación se muestra un ejemplo usando los datos de Dipodium rosea. La superposición es total, ya que ambas barras comienzan desde cero en cada posición de la inflorescencia:
DW%>%
select(fruit_position_effect,frutos_si_o_no )%>%
drop_na(fruit_position_effect)%>%
ggplot(aes(fruit_position_effect))+
geom_bar(aes(fill=factor(frutos_si_o_no)),color="white",
position = "identity")+ # Para que cada grupo comience en cero
xlab("Posiciones de las flores en la inflorescencia")+
ylab("Frecuencia")+
guides(fill=FALSE)+
theme(axis.title=element_text(size=14,face="bold"))
Para representar las proporciones de cada grupo dentro del conjunto total de observaciones, es necesario transformar los conteos en porcentajes. En ggplot2, esto se realiza especificando en el argumento estético y la relación:
y=(..count..)/sum(..count..).
Esta expresión indica a ggplot2 que tome el conteo de cada barra (..count..) y lo divida entre la suma total de los conteos dentro del conjunto de datos representado. Como consecuencia, la altura de cada barra refleja la proporción de casos dentro de la categoría correspondiente, y la suma de todas las barras del gráfico equivale a 100%.
Este enfoque es muy útil cuando el interés no es comparar números absolutos, sino comprender qué fracción del total representa cada categoría o cada combinación de categorías.
fill=factor(Frutos_si_o_no)
DW%>%
select(fruit_position_effect,frutos_si_o_no )%>%
drop_na(fruit_position_effect)%>%
ggplot(aes(fruit_position_effect))+
geom_bar(aes(y=(..count..)/sum(..count..),
fill=factor(frutos_si_o_no)),
color="white", position="dodge")+ # Para que cada grupo comience en cero se usa position = "identity"
xlab("Posiciones de las flores en la inflorescencia")+
ylab("Frecuencia")+
guides(fill=FALSE)+
theme(axis.title=element_text(size=14,face="bold"))
Cuando se desea que cada barra represente el 100% de los grupos dentro de cada categoría del eje X, se emplea el argumento:
position=“fill”.
Esta opción transforma automáticamente los conteos en proporciones relativas dentro de cada categoría, de modo que todas las barras tienen la misma altura (equivalente al 100%), y las diferencias entre grupos se expresan como partes proporcionales dentro de cada barra. En el siguiente ejemplo se incorpora una variable discreta—en este caso, la presencia de frutos (verde) o su ausencia (rojo). La visualización resultante permite identificar patrones ecológicos relevantes. Por ejemplo, se observa que en las posiciones superiores de la inflorescencia ( > 27 ), el porcentaje de flores que desarrollan frutos es notablemente menor en comparación con las posiciones basales. Esto sugiere una posible disminución en el éxito reproductivo a medida que aumenta la posición de la flor en la inflorescencia, un patrón consistente con gradientes de recursos, limitaciones energéticas o efectos posicionales comunes en plantas con inflorescencias alargadas.
require(scales)
DW%>%
select(fruit_position_effect,frutos_si_o_no )%>%
drop_na(fruit_position_effect)%>%
ggplot(aes(factor(fruit_position_effect),
fill=factor(frutos_si_o_no)))+
geom_bar(aes(y=(..count..)/sum(..count..)),
position="fill")+ # Para que cada columna sume a 1.0 se usa position = "fill"
xlab("Posiciones de las flores en la inflorescencia")+
ylab("Proporción")+
guides(fill=FALSE)+
theme(axis.title=element_text(size=10,face="bold"))
Seleccione el archivo “Lelto” en el paquete “ggversa”. Seleccione la variable adultos o juvenil, que representa la cantidad de plantas adulto o juvenil que se encuentra en el árbol. Los datos son de una pequeñita orquídea que esta limitado las veredas del “El Toro” y de los “Vientos Alizios” en el Yunque. Primero se va unir las columnas de juvenil con las de adultos, para después hacer un gráfico donde cada columna sume a 1.0 se usa position = “fill”.
– paso 1
head(Lelto)
– paso 2
df=Lelto %>% select(Juveniles, Adultos)
– paso 3
dfLelto = df%>% gather(key=“Estado”, value=“Conteos”) # gather( ) recuerda esta función, siempre me hace dificil encontrarla en el web.
– Mire el nombre de las columnas primero y como esta organiado
Para modificar el orden en que aparecen las barras en un gráfico,
puede utilizarse la función reorder(), la cual permite
ordenar los niveles de una variable categórica según los valores de otra
variable asociada. En el siguiente ejemplo, las barras se ordenan de
mayor a menor para facilitar la comparación visual. En el conjunto de
datos de Dipodium rosea, esto resulta en que las posiciones de
las flores en la inflorescencia se muestren ordenadas de la más alta a
la más baja, proporcionando una representación más intuitiva del
gradiente posicional.
library(forcats)
DW%>%
select(fruit_position_effect,frutos_si_o_no )%>%
drop_na(fruit_position_effect)%>%
ggplot(aes(reorder(factor(fruit_position_effect),-fruit_position_effect),
fill=factor(frutos_si_o_no)))+
geom_bar(aes(y=(..count..)/sum(..count..)))+
xlab("Posiciones de las flores en la inflorescencia")+
ylab("Proporción de flores con frutos")+
guides(fill=FALSE)+
theme(axis.title=element_text(size=14,face="bold"))+
scale_fill_manual(values = c("red", "green"))