用python的matplotlib库绘制柱状图和饼图
毕业设计有一个需求,有一系列选择题,每个题目有四个选项,现在需要统计每个选项的人数,也就是画出柱状图和饼图。在网上找到了matplotlib这个库,折腾了几个小时,总算把需要的功能实现了。这个库一开始看起来是没有多少头绪的,很多函数也不知道什么意思,我感觉最好的学习方式就是按照需求,找到对应的gallery示例demo,然后按照需求来改,慢慢就知道怎么做了。只是看教程的话会感觉没有头绪,但是还是推荐先看几篇入门教程。
###用matplotlib绘制柱状图
主要参考了这两个demo:
http://matplotlib.org/examples/pylab_examples/barchart_demo.html
http://matplotlib.org/examples/api/barchart_demo.html
现在照葫芦画瓢来个自己的:
#coding=utf-8
"""
Bar chart demo with pairs of bars grouped for easy comparison.
"""
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #指定默认字体,解决中文显示问题
n_groups = 6
means_men = (20, 35, 30, 35, 27, 18)
#std_men = (2, 3, 4, 1, 2)
means_women = (25, 32, 34, 20, 25, 18)
#std_women = (3, 5, 2, 3, 3)
fig, ax = plt.subplots()
index = np.arange(n_groups)
#bar_width = 0.35
bar_width = 0.2
opacity = 0.4
error_config = {'ecolor': '0.3'}
rects1 = plt.bar(index, means_men, bar_width,
alpha=opacity,
color='b',
#yerr=std_men,
error_kw=error_config,
label='Men')
rects2 = plt.bar(index + bar_width, means_women, bar_width,
alpha=opacity,
color='r',
#yerr=std_women,
error_kw=error_config,
label='Women')
rects3 = plt.bar(index+bar_width*2, means_men, bar_width,
alpha=opacity,
color='b',
#yerr=std_men,
error_kw=error_config,
label='Men')
rects4 = plt.bar(index+bar_width*3, means_men, bar_width,
alpha=opacity,
color='g',
#yerr=std_men,
error_kw=error_config,
label='Men')
def autolabel(rects):
# attach some text labels
for rect in rects:
height = rect.get_height()
ax.text(rect.get_x()+rect.get_width()/2.0, 1.05*height,
'%d'%int(height), ha='center', va='bottom')
autolabel(rects1)
autolabel(rects2)
autolabel(rects3)
autolabel(rects4)
plt.xlabel(u'题号')
plt.ylabel(u'人数')
plt.title(u'答题结果统计')
plt.xticks(index + bar_width, ('1', '2', '3', '4', '5', '6'))
#plt.legend()
ax.set_ybound(0, 40)
plt.tight_layout()
plt.show()
#plt.savefig(u't.png')
###用matplotlib绘制饼图
这个就比较简单啦,直接看demo就可以了。
"""
Demo of a basic pie chart plus a few additional features.
In addition to the basic pie chart, this demo shows a few optional features:
* slice labels
* auto-labeling the percentage
* offsetting a slice with "explode"
* drop-shadow
* custom start angle
Note about the custom start angle:
The default ``startangle`` is 0, which would start the "Frogs" slice on the
positive x-axis. This example sets ``startangle = 90`` such that everything is
rotated counter-clockwise by 90 degrees, and the frog slice starts on the
positive y-axis.
"""
import matplotlib.pyplot as plt
# The slices will be ordered and plotted counter-clockwise.
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']
explode = (0, 0.1, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs')
plt.pie(sizes, explode=explode, labels=labels, colors=colors,
autopct='%1.1f%%', shadow=True, startangle=90)
# Set aspect ratio to be equal so that pie is drawn as a circle.
plt.axis('equal')
plt.show()
###Ref
matplotlib
python使用matplotlib绘图 – barChart
绘图: matplotlib核心剖析
python使用matplotlib绘图详解