1
votes

I am plotting multiple vectors in one graph with ggplot2. I have the following dataframe

Array 1 2 3 4 5 6 7 8 9 10
Arr1 0.1 0.1 0.1 0.2 0.2 0.2 0.7 0.7 0.4 0.7
Arr2 0.6 0.6 0.6 0.1 0.1 0.1 0.1 0.1 0.5 0.1
Arr3 0.3 0.3 0.3 0.7 0.7 0.7 0.2 0.2 0.1 0.2
Arr4 0.4 0.6 0.7 0.2 0.1 0.3 0.4 0.5 0.3 0.9
B a a a b b b a a a b
C b b b a a b b a b a

So I melt the data to plot all vectors with horizontal stack bar, which is as follows:

df2<-df %>% 
  melt(id.vars = "Array") %>%
  mutate(variable = str_extract(variable, "[0-9]+")) %>%
  mutate(value = case_when(
    value == "a" ~ 1,
    value == "b" ~ 2, 
    TRUE ~ as.numeric(value)
  )) %>%
  mutate(variable = as.numeric(variable))
  
df2 %>% 
  ggplot(aes(x = Array, y = variable, group = Array, fill = value)) +
  geom_col() + coord_flip()

But the x-axis is not proper, the image shows that same number of a and b in vector B has different sizes, also last single element has bigger size than first three. The problem in x-axis is easier to detect with vector B and C then Arr.

When you look at df2 variable only has 1 to 10, I cannot figure out how there are more than 50 points on x - axis.

Graph