2017-01-22 4 views
-1

У меня есть dataframe (Df), который показывает эмоции, связанные с различными категориями бизнеса:Создание нескольких круговых диаграмм из панд dataframe (по одному на каждой строке)

enter image description here

Моя задача состоит в том, чтобы создать пирог диаграммы, показывающие% эмоций для каждого типа бизнеса. Поэтому мне нужно создать функцию в matplotlib, которая читает столбец «Бизнес», а затем создает круговую диаграмму, используя каждую из категорий эмоций для каждой строки в кадре данных.

Я уже построил планку, но мне не повезло с круговой диаграммой. EDIT: Вот мой код для бара УЧАСТКА:

import pandas as pd 
import csv 
import matplotlib.pyplot as plt 
GraphData = open("barGraph.csv") 
df = pd.read_csv('barGraph.csv') 
ax = df.plot(kind='bar', title ="Emotions at Various Businesses", figsize=(15, 10), legend=True, fontsize=12) 
ax.set_xlabel("Business Type",fontsize=12) 
ax.set_ylabel("Strength of Emotion",fontsize=12) 
ax.set_xticklabels(['Beauty & Spas', 'Burgers-Restaurants', 'Pizza', 'Mexican Restaurants', 'Modern European-Restaurants', 'Chinese']) 
plt.show() 

Я прочитал документацию на круговых диаграммах, но это не делает смысл для меня, по крайней мере, это относится к рисованию данных из dataframe в отличие от серии.

Любые предложения?

+1

Вы должны поделиться своим действующим кодом с барным графиком – Boud

+0

Возможно, это полезно: [Построение Pandas DataFrames in to Pie Charts с использованием matplotlib] (http://stackoverflow.com/questions/21090316/plotting-pandas-dataframes-in-to- pie-charts-using-matplotlib) – Lucas

+0

@Boud Я просто добавил его по вашему запросу. –

ответ

3

Рассмотрим dataframe df

df = pd.DataFrame(dict(
     Business='Beauty & Spas;Burgers-Restaurants;Pizza;Mexican Restaurants;Modern European-Restaurants;Chineese'.split(';'), 
     aniticipation=[0] * 6, 
     enjoyment=[6., 1., 6., 33.,150., 19.5], 
     sad=[1., 2., 1., 3., 13.5, 0.], 
     disgust=[1, 1, 0, 3, 37, 3], 
     anger=[1.5, 2., 4., 9., 19., 3.], 
     surprise=[3, 0, 0, 2, 12, 1], 
     fear=[0, 1, 1, 9, 22, 1], 
     trust=[0] * 6 
    )) 

enter image description here


Вы можете создавать круговые диаграммы, как этот

fig, axes = plt.subplots(2, 3, figsize=(10, 6)) 

for i, (idx, row) in enumerate(df.set_index('Business').iterrows()): 
    ax = axes[i // 3, i % 3] 
    row = row[row.gt(row.sum() * .01)] 
    ax.pie(row, labels=row.index, startangle=30) 
    ax.set_title(idx) 

fig.subplots_adjust(wspace=.2) 

enter image description here

+0

Спасибо, piRSquared. Я очень ценю это. –

+0

@AndrewSmith вы, вероятно, используете ноутбук jupyter, и вам нужно запустить «% matplotlib inline» – piRSquared

+0

Да, точно. Почему Jupyter требует встроенного формата? –