0

我有一个列表list = [['0-50',4],['50-100',11],['100-150',73],['150-200',46]],我想在histogramusing mpld3in 中显示它python pyspark。列表的每个元素的第一部分是范围,它将在 x 轴上,histogram第二部分是该范围内的人数,将在 y 轴上。如何使用或者制作matplotlib条形图?mpld3pyspark

更新:我根据 [this] 示例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()
4

1 回答 1

0

一个让matplotlib剧情好看的秘密武器是import seabornmpl这会用一些不错的东西覆盖默认值。

我还会将条形变大并将 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()

这是它的外观:

在此处输入图像描述

这里是一个笔记本,你可以在其中看到mpld3添加的交互性(这基本上没用,但有点有趣)。

于 2015-08-15T20:18:36.523 回答