2015-08-14 3 views
0

У меня есть список list = [['0-50',4],['50-100',11],['100-150',73],['150-200',46]], и я хочу показать его на histogram, используя mpld3 в python pyspark. Первая часть в каждом элементе списка - это диапазон, который будет находиться по оси x от histogram, а вторая часть - это количество людей в этом диапазоне, которые будут по оси y. Как я могу составить гистограмму с использованием matplotlib или mpld3 в pyspark?выпуск в создании гистограммы с использованием matplotlib или mpld3 в pyspark

UPDATE: Я попытался ниже код на основе [это], например 1 и отображает bar chart но выход визуально очень плохо с большим количеством серого цвета области вокруг границы участка. Как я могу понять, как это выглядит лучше и лучше с точки зрения визуализации?

import numpy as np 
import matplotlib.pyplot as plt 

list = [['0-50',4],['50-100',11],['100-150',73],['150-200',46]] 
n_groups = len(list) 

fig, ax = plt.subplots() 

index = np.arange(n_groups) 
bar_width = 0.35 

opacity = 0.4 
error_config = {'ecolor': '0.3'} 

number = [] 
ranges = [] 
for item in list: 
    number.append(item[1]) 
    ranges.append(item[0]) 

rects1 = plt.bar(index, number, bar_width, 
       alpha=opacity, 
       color='b', 
       error_kw=error_config) 

plt.xlabel('Number') 
plt.ylabel('range') 
plt.xticks(index + bar_width, (ranges[0],ranges[1],ranges[2],ranges[3])) 
plt.legend() 

plt.tight_layout() 
plt.show() 
+0

Пожалуйста, укажите более подробную информацию о том, что вы пробовали до сих пор и где вы застряли. См. Http://stackoverflow.com/help/how-to-ask http://stackoverflow.com/help/mcve –

+0

@AbrahamDFlaxman Я изменил свой выше пост моим текущим кодом. Я вижу гистограмму, но результат визуально очень плохой – user2966197

ответ

0

Секретное оружие, чтобы matplotlib участки хорошо выглядеть import seaborn. Это переопределяет значения mpl с чем-то приятным.

Я бы также сделал бруски большими и переместил xticks в середину баров. Вот небольшая подстройка вашего кода, чтобы сделать так:

import numpy as np, matplotlib.pyplot as plt, mpld3, seaborn as sns 

list = [['0-50',4],['50-100',11],['100-150',73],['150-200',46]] 
n_groups = len(list) 
index = np.arange(n_groups) 

bar_width = 0.9 
opacity = 0.4 

number = [] 
ranges = [] 
for item in list: 
    number.append(item[1]) 
    ranges.append(item[0]) 

rects1 = plt.bar(index, number, bar_width, 
       alpha=opacity, 
       color='b') 

plt.xlabel('Number') 
plt.ylabel('range') 
plt.xticks(index + bar_width/2, (ranges[0],ranges[1],ranges[2],ranges[3])) 

mpld3.display() 

Вот как это выглядит:

enter image description here

А вот ноутбук where you can see the interactivity that mpld3 adds (что в принципе бесполезно, но немного весело).