2

I have a csv file whose data looks like this :

                A       B       C       D       E
    feature1    0.6388  0.581   0.612   0.571   0.5758
    feature2    0.6218  0.537   0.624   0.535   0.6235
    feature3    0.5639  0.404   0.56    0.497   0.569
    feature4    0.6695  0.622   0.656   0.542   0.6337
    feature5    0.6252  0.532   0.625   0.523   0.6235
    feature6    0.6712  0.584   0.641   0.52    0.632

where I have 6 features of 5 classes. I want to plot this as a bar chart ( x axis will have the features and y axis values from 0 to 1, and the bars would be of class A,B...). How do I do this without redundant coding?

2 Answers 2

4

I would use pandas....

import pandas as pd
import matplotlib.pyplot as plt
from io import StringIO

csvfile = StringIO("""
                A       B       C       D       E
    feature1    0.6388  0.581   0.612   0.571   0.5758
    feature2    0.6218  0.537   0.624   0.535   0.6235
    feature3    0.5639  0.404   0.56    0.497   0.569
    feature4    0.6695  0.622   0.656   0.542   0.6337
    feature5    0.6252  0.532   0.625   0.523   0.6235
    feature6    0.6712  0.584   0.641   0.52    0.632""")

df=pd.read_csv(csvfile, sep='\s\s+', index_col=0)

ax = df.plot.bar()
ax.set_ylim(0,1)
ax.legend(ncol=5,loc='upper center')
plt.show()

Output:

enter image description here

Just getting fancy for the fun of it.

import pandas as pd
import matplotlib.pyplot as plt
from io import StringIO

csvfile = StringIO("""
                A       B       C       D       E
    feature1    0.6388  0.581   0.612   0.571   0.5758
    feature2    0.6218  0.537   0.624   0.535   0.6235
    feature3    0.5639  0.404   0.56    0.497   0.569
    feature4    0.6695  0.622   0.656   0.542   0.6337
    feature5    0.6252  0.532   0.625   0.523   0.6235
    feature6    0.6712  0.584   0.641   0.52    0.632""")

df=pd.read_csv(csvfile, sep='\s\s+', index_col=0)

ax = df.plot.bar(zorder=2)
ax.set_ylim(0,1)
ax.legend(ncol=5,loc='upper center')
ax.grid(axis='y')
ax.spines['left'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.show()

Output:

enter image description here

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

Comments

4

Do you mean something like

import pandas as pd

df = pd.read_csv('file.csv')

df.plot.bar()

Output:

enter image description here

Comments

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.