Suppose we read some data into a pandas data frame:
data1 = pd.read_csv("data.csv", "\t")
The content looks like this:
And then define a function which should give us a horizontal bar chart, where the bar lengths represent values and the bars are labelled with the keys.
def barchart(data, labels):
pos = arange(len(data))+.5 # the bar centers on the y axis
barh(pos, data, align='center', height=0.25)
yticks(pos, labels)
Then we call the plot function like this:
barchart(data1["val"], data1["key"])
which gives us the following plot:
Now, what determines the order of the bars?
Suppose we want the bars in a special order, say [C, A, D, F, E, B]
, how can we enforce this?
If you directly read the key as the index with
In [12]: df = pd.read_csv('data.csv', '\t', index_col='key')
In [13]: df
Out[13]:
val
key
A 0.1
B 0.4
C 0.3
D 0.5
E 0.2
you can use ix
to get the index in a different order and plot it using df.plot
:
In [14]: df.ix[list('CADFEB')].plot(kind='barh')
Out[14]: <matplotlib.axes._subplots.AxesSubplot at 0x530fa90>
(Note that F is not given in the data, but you gave it as an example)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With