2

I am trying to plot informations from this DataFrame :

                                       sold    not_sold   success_rate
category   PriceBucket  PriceBucketTitle            
Papeterie   0              [0, 2]      42401    471886  17.130
            1              (2, 3]      28627    360907  17.240
            2              (3, 3.5]    46198    434063  18.370
            3              (3.5, 4]    80307    564594  17.870
            4              (4, 5]      28653    171226  16.860
            5              (5, 6]      50301    415379  17.385
            6              (6, 8]      45370    446013  17.730
            7              (8, 10]     39859    360187  18.005
            8              (10, 18]    52263    381596  17.630
            9              (18, 585]   36897    387145  19.730

And this is my code :

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
plt.title('Success Rate By Category : ' + str(group['category'].iloc[0]))
ax2 = ax.twinx()

x = last_merge['PriceBucket'].as_matrix()


ax2.bar(x, last_merge['sold'].as_matrix(), color='None')
ax2.bar(x, last_merge['not_sold'].as_matrix(), color='None', edgecolor='red', hatch="/")

ax.plot(x, last_merge['success_rate'].as_matrix(), color='blue')

ax2.set_ylabel("Product's number", color='red')
ax.set_ylabel(ylabel='Success Rate', color='blue')

ax.set_xlabel('Same X-values')
plt.show()

Now my object is to get 'PriceBucketTitle' on x, instead of 'PriceBucket'. The error message :

ValueError: could not convert string to float: [0, 2]

Help ? Thnx

1
  • Well, I think the error is self-explanatory : it tries to find a float, or string under float format, but only find [0, 2], which can't be converted to a float Commented Jul 26, 2016 at 9:57

1 Answer 1

2

I did this:

fig, ax = plt.subplots()
plt.title('Success Rate By Category')
ax2 = ax.twinx()

lmnew = last_merge.reset_index().set_index('PriceBucketTitle')
lmnew.sold.plot.bar(color='None', ax=ax2)
lmnew.not_sold.plot.bar(color='None', edgecolor='red', hatch='/', ax=ax2)
lmnew.success_rate.plot(color='blue', ax=ax)

ax2.set_ylabel("Product's number", color='red')
ax.set_ylabel(ylabel='Success Rate', color='blue')

ax.set_xlabel('Same X-values')

enter image description here

Sign up to request clarification or add additional context in comments.

1 Comment

awesome ! Thanx !! you ROCK !

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.