1
$\begingroup$

I am plotting a barplot using ggplot + geom_bar() function in R.

I have some the recoreds which share the same x-axis identifiers.

geom_bar() did merge all values that shared the same x-axis identifiers.

Like the following example.

library("ggplot2")

df <- data.frame(x = c("a","a","b","c","d","e"),
                 y = c(5,5,5,5,5,5),
                 stringsAsFactors = FALSE)

ggplot(df, aes(x, y)) + geom_bar(stat = "identity")

The erroneous graph is displayed below.

The highest bar means the sum of multiple y-values shared same x-axis names.

Anyone else could help me to solve this problem? Thanks.

enter image description here

$\endgroup$
3
  • $\begingroup$ Please provide a reproducible example so we can understand what's going on. $\endgroup$ – Ram RS Dec 20 '20 at 7:20
  • $\begingroup$ Interesting question. Your data is out of shape though - you cannot plot duplicate data points on an axis - how will anyone reading the plot know the difference between the two data points? $\endgroup$ – Ram RS Dec 20 '20 at 20:30
  • $\begingroup$ Finally, I solved it using barplot() function that does not merge values that have same x-axis name. $\endgroup$ – YP CHEN Dec 21 '20 at 2:34
1
$\begingroup$

As you seem to have surmised, the graph is not erroneous, but correct. You have a total of 10 for a and that's what it's showing. If you want it to ignore duplicate X-axis values then you need to tell ggplot which datapoints it should actually be using. barplot() is assuming that your duplicate a values are intentional, ggplot assumes they should be grouped. These are both reasonable assumptions and it's your responsibility to determine beforehand which is correct.

$\endgroup$

Not the answer you're looking for? Browse other questions tagged or ask your own question.