Making a clustered bar chart
Question:
I have a little pandas dataframe that looks like this:
import pandas as pd
data = {'Word': ['drink', 'cherry', 'berry', 'plum', 'crisp', 'spices'],
'Percentage1': [18.166654, 13.498262, 9.810123, 7.964429, 7.892941, 0.856775],
'Percentage2': [29.014272, 12.802642, 6.775552, 7.105845, 4.715009, 1.663586]}
df = pd.DataFrame(data)
Word Percentage1 Percentage2
0 drink 18.166654 29.014272
1 cherry 13.498262 12.802642
2 berry 9.810123 6.775552
3 plum 7.964429 7.105845
4 crisp 7.892941 4.715009
5 spices 0.856775 1.663586
Words (50) and the two columns with figures corresponding to every one of them signifying the incidence of the word.
How do I make a clustered chart to show the comparison of the two figures for each word?
I have tried virtually every piece of code that was offered to other people on this site, I just don’t understand how to group the two "Percentage" columns.
Answers:
try this,
df.set_index('Word').plot(kind='bar')
O/P
If you don’t want to perform chart for all the values columns in df use this. Just setting index act as X
and rest of all the columns act as y
Input:
Word Percentage1 Percentage2 Percentage3 Percentage4
0 drink 18.166654 29.014272 7.105845 29.014272
1 cherry 13.498262 12.802642 4.715009 12.802642
2 berry 9.810123 6.775552 6.097997 3.408988
3 plum 7.964429 7.105845 12.802642 19.620618
4 crisp 7.892941 4.715009 6.775552 35.832248
O/P
- All of the existing options use
.set_index
and / or specify y=
. However, the simplest solution is to only specify x=
for the column to be on the x-axis.
- The only reason to specify
y=
is if there are many columns, and only selected columns are desired for plotting.
- Tested in
python 3.10
, pandas 1.4.3
, matplotlib 3.5.2
ax = df.plot(kind='bar', x='Word', rot=0)
I have a little pandas dataframe that looks like this:
import pandas as pd
data = {'Word': ['drink', 'cherry', 'berry', 'plum', 'crisp', 'spices'],
'Percentage1': [18.166654, 13.498262, 9.810123, 7.964429, 7.892941, 0.856775],
'Percentage2': [29.014272, 12.802642, 6.775552, 7.105845, 4.715009, 1.663586]}
df = pd.DataFrame(data)
Word Percentage1 Percentage2
0 drink 18.166654 29.014272
1 cherry 13.498262 12.802642
2 berry 9.810123 6.775552
3 plum 7.964429 7.105845
4 crisp 7.892941 4.715009
5 spices 0.856775 1.663586
Words (50) and the two columns with figures corresponding to every one of them signifying the incidence of the word.
How do I make a clustered chart to show the comparison of the two figures for each word?
I have tried virtually every piece of code that was offered to other people on this site, I just don’t understand how to group the two "Percentage" columns.
try this,
df.set_index('Word').plot(kind='bar')
O/P
If you don’t want to perform chart for all the values columns in df use this. Just setting index act as X
and rest of all the columns act as y
Input:
Word Percentage1 Percentage2 Percentage3 Percentage4
0 drink 18.166654 29.014272 7.105845 29.014272
1 cherry 13.498262 12.802642 4.715009 12.802642
2 berry 9.810123 6.775552 6.097997 3.408988
3 plum 7.964429 7.105845 12.802642 19.620618
4 crisp 7.892941 4.715009 6.775552 35.832248
O/P
- All of the existing options use
.set_index
and / or specifyy=
. However, the simplest solution is to only specifyx=
for the column to be on the x-axis. - The only reason to specify
y=
is if there are many columns, and only selected columns are desired for plotting. - Tested in
python 3.10
,pandas 1.4.3
,matplotlib 3.5.2
ax = df.plot(kind='bar', x='Word', rot=0)