Reading in your data;
df <- read.table(text="Count Group_A Group_B
2 Red One
1 Blue One
1 Green One
5 Red Two
1 Blue Two
2 Red Three
4 Blue Three
2 Green Three
1 Yellow Three", sep=" ", header=TRUE)
Specifying the level ordering of factors;
df$Group_A <- factor(df$Group_A, levels=c("Red", "Blue", "Green", "Yellow"))
df$Group_B <- factor(df$Group_B, levels=c("One", "Two", "Three"))
Creating a barplot;
library(ggplot2)
ggplot(df) +
geom_bar(aes(x=Group_B, y=Count, fill=Group_A), position="dodge", stat="identity") +
scale_fill_manual(values=c("Red"="red", "Blue"="blue", "Green"="green","Yellow"="yellow"))

Alternatively, if you don't want the uneven groups to have different widths, I'd add in the missing data;
df <- read.table(text="Count Group_A Group_B
2 Red One
1 Blue One
1 Green One
5 Red Two
1 Blue Two
2 Red Three
4 Blue Three
2 Green Three
1 Yellow Three
0 Yellow One
0 Green Two
0 Yellow Two", sep=" ", header=TRUE)

For an even closer representation of what you requested;
ggplot(df) +
geom_bar(aes(x=Group_B, y=Count, color=Group_A), fill="white", width=0.3, position=position_dodge(width=0.5), stat="identity", lwd=2) +
scale_color_manual(values=c("Red"="red", "Blue"="blue", "Green"="green", "Yellow"="yellow")) + theme_bw()
