这篇文章是关于柱状图的第二篇,在第一篇中,我大概讲了如何制作一个柱状图,而排序需要一个题为知识——二维列表。
1.二维列表
二维列表的元素还是列表(列表的嵌套),称之为二维列表。需要通过行标和列标来访问二维列表的元素。
先说一下为什么要了解二维列表:在排序的时候,我们用sort()函数只能排一个列表,而这时候排序只改变了一个列表data的值,而列表name(lab)却没有得到排序,所以排序出来的数据与标签不一致,这时候就要用二维列表来解决。
二维列表是这样的:
name_data = [['标签1', 11111],
['标签2', 22222],
['标签3', 33333],
['标签4', 44444],
['标签5', 55555]]
#你可以写更多,其中的数值是列表data,标签X是name(lab)
那么如何排序二维列表呢?
这时候,我们要自定义一个函数:
def mykey(x):
return x[1]
#这里你可以选择直接搬走
这个函数的位置建议在二维列表的下面
接着,只需要用sort()函数排序,不过格式有些不一样:
name_data.sort(key = mykey)
#name_data是二维列表的名字,如果对sort()还不太了解,看一下文章开头的链接,那篇文章里有关于sort()的知识,括号里的内容照搬,注意:mykey是我们定义的函数的名字,如果更改了,那么请把这里的也修改一下,key = 不要动!
这样,我们用二维列表完成数据排序,但是绘制柱状图需要的是两个列表啊,不能直接利用二维列表绘制。
我们需要把列表拆分以下,一般最土的方法最不容易出错,那我们就用一个最土的方法吧:
name = []
data = []
for n in name_data:
name.append(n[0])
data.append(n[1])
pyplot.bar(name, data)
pyplot.show()
现在我们就可以绘制一个垂直的柱状图了,那水平的柱状图该怎么话呢?
方法是一样的,只是我们需要改一下单词:
pyplot.barh(name, data)
现在我们的柱状图已经完成了,但是我们好像忘记美化柱状图了,这里我给大家几张图片,大家按照图片自己试一试。
THE END