如何管理条形图中的不同标签,从文本文件中获取数据?

时间:2016-10-12 15:46:37

标签: python matplotlib

我是使用matplotlib的新手,所以我遇到了一些问题。我必须为我拥有的每个网站创建一个带有不同标签的条形图。 该文件如下所示:

1001 adblock 12
1001 badger 11
1001 disconnect 15
1001 ghostery 15
1001 nottrack 14
1001 origin 15
1001 policy 16
1001 ultimate 14
4ruote adblock 12
4ruote badger 1
4ruote disconnect 14
4ruote ghostery 27
4ruote nottrack 9
4ruote origin 26
4ruote policy 34
4ruote ultimate 20
...... ........ ...

我的目标是创建一个条形图,其中包含:

    x轴站点上的
  1. (文件的第一列),是一个字符串

  2. 在y轴上该网站的值(文件的第三列)(在文件内重复8次),所以8个整数值

  3. 标签,对于特定网站,存在于第二列(字符串)中。

  4. 我读了不同的答案,但是对于同一个变量,每个答案都不会对标签之间的这种比较构成威胁。 我正在做的是读取文件,拆分行并取第一列和第三列,但我该如何管理标签?

2 个答案:

答案 0 :(得分:0)

我们假设您已将网站读入8个不同的数据集(adblock,badger,disconnect等)。然后,您可以使用下面的逻辑绘制每个系列并在图例上显示其标签。

import numpy
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
#this is your number of datasets
x = numpy.arange(8)
width = 0.1
#plot each dataset here, offset by the width of the preceding bars
b1 = ax.bar(x, adblock, width, color='r')
b2 = ax.bar(x + width, badger, color='g')
b3 = ax.bar(x + width*2, disconnect, color='m')
legend([b1[0], b2[0], b3[0]], ['adblock', 'badger',
                                          'disconnect'])
plt.show()

答案 1 :(得分:0)

seaborn做得很整齐:

from pandas import read_csv
from matplotlib.pyplot import show
from seaborn import factorplot

fil = read_csv('multi_bar.txt', sep=r'\s*', engine='python', header=None)
fil.columns=['site','type','value']

factorplot(data=fil, x='site', y='value', hue='type', kind='bar')

show()

enter image description here