Home > Mobile >  plot.bar(), duplicate values are removed in the x-axis?
plot.bar(), duplicate values are removed in the x-axis?

Time:10-26

I have as example the following DataFrame df and I want to plot the price as x-axis and share_1 and share_2 as y-axis in bar stacked form. I want to avoid using pandas.plot and rather using plt.bar and extract the x_values and y_values from the Dataframe.

Price size share_1  share_2
10    1     0.05     0.95
10    2     0.07     0.93
10    3     0.1      0.95
20    4     0.15     0.75
20    5     0.2.     0.8
20    6     0.35     0.65
30    7     0.5.     0.5
30    8     0.53     0.47
30    9     0.6.     0.4

This is the way I proceed:

x=  df['Price']
y1= df['share_1']
y2= df['share_2']
plt.bar(x,y1,label='share_1')
plt.bar(x,y2,label='share_2')

I still have the problem that the matplotlib removed the duplicate values the x-axis or maybe the mean value for the duplicated values is calculated automatically so that I get 3 value in the x-axis and not 6 as I aim to have. I don't know what is the reason.

my questions are:

  1. It's possible to extract x and y values as I did or should I convert the values in certain form as string or list?
  2. How can I avoid the fact that the duplicate values are removed in the x-axis. I want to have exactly the same number of x_values as in the DataFrame

CodePudding user response:

Try:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.bar(x, y1, label="share_1")
ax.bar(x, y2, label="share_2", bottom=y1)
ax.set_xticks(x)
ax.legend()
ax.set_xticklabels(labels) 
plt.show()

enter image description here

As an aside, consider using pandas.plot as follows:

fig,ax = plt.subplots()
df.plot.bar(x="Price", y=["share_1","share_2"], stacked=True, ax=ax)

CodePudding user response:

Thank you @Quang Hoang!

this is what I've got when I used your code, unfortunately it did not work

Using df.plot.bar(x="Price", y=["share_1","share_2"], stacked=True, ax=ax) did not work either.

  • Related