python matplotlib 画图
2017-07-18 00:00
483 查看
先引用要用到的
1. 饼状图
饼状图很简单,只要把需要展示的数据填进去就可以了。
2. 横着的竖状图
一般的竖状图是立着的,这个图的x轴表示大小,y轴是标签,画出来是横着的。
3. 线形图
这个例子在一张图里面画了两条线,并且x轴是时间,这里涉及到如何将时间显示在x轴上,稍微复杂一些。
4. 竖状图
这个比较简单,属于最基本的matplotlib图形之一。
官方文档有许多可以参考的例子https://matplotlib.org/gallery.html
import os import matplotlib matplotlib.use('Agg') //不画图,只写文件 from matplotlib.font_manager import * import matplotlib.pyplot as plt import numpy as np from matplotlib.ticker import Formatter import matplotlib.dates as dates IMAGE_URL = os.path.join(settings.STORE_ROOT, 'images') myfont = FontProperties(fname=os.path.join(IMAGE_URL, 'STSONG.ttf')) matplotlib.rcParams['axes.unicode_minus'] = False //之前配来弄中文乱码的,不知道是否有用 COLORS = ['#A92127', '#DA733C', '#FCDA5B', '#9ED24C', '#2D6465', '#C9A59C', '#D1D0A7', '#8C9489', '#756C74', '#183D75', '#449CEC', '#E2DFD9', '#B9A882', '#B29439'] //自己的颜色选择列表,matplotlib默认的颜色实在太丑了
1. 饼状图
饼状图很简单,只要把需要展示的数据填进去就可以了。
def draw_pie(datas): plt.rcParams['patch.edgecolor'] = '#8E8E8E' //设置饼状图的边线颜色 fig1, ax1 = plt.subplots() //不要图形四周的框框,因为很丑 ax1.spines['top'].set_visible(False) ax1.spines['bottom'].set_visible(False) ax1.spines['right'].set_visible(False) ax1.spines['left'].set_visible(False) labels, fracs, explodes = generate_datas(datas) // 获取画图需要的数据,labels是标签列表,也就是每块饼对应的中文解释,fracs是每块饼的值列表,explodes是每块饼离圆心的距离列表,如果距离递增,画出来的饼图就是螺旋形的。 pie, l_text, p_text = ax1.pie(fracs, colors=COLORS, explode=tuple(explodes), labels=labels, labeldistance=1.1, autopct='%1.2f%%', startangle=90, pctdistance=0.95)//画饼 for t in l_text: t.set_fontproperties(myfont) //设置字体 t.set_size(10) //设置labels显示的大小 for t in p_text: t.set_size(8) //设置百分比显示大小 ax1.axis('equal') // 这个非常重要,保证饼画出来是圆的 plt.savefig(os.path.join(IMAGE_URL, 'image_name')) //保存图片 plt.close() //保证下次画新的图
2. 横着的竖状图
一般的竖状图是立着的,这个图的x轴表示大小,y轴是标签,画出来是横着的。
def draw_retcode(datas): y_data, x_data = generate_datas(datas) //x,y轴需要的列表 y_pos = np.arange(len(y_data)) fig, ax = plt.subplots() ax.barh(y_pos, counts, align='center', alpha=0.4) //画图 plt.yticks(y_pos, y_data) plt.xlabel(u'\u0078\u8f74', fontproperties=myfont) //x轴名称 plt.ylabel(u'\u0079\u8f74', fontproperties=myfont) //y轴名称 plt.savefig(os.path.join(IMAGE_URL, 'image_name')) plt.close()
3. 线形图
这个例子在一张图里面画了两条线,并且x轴是时间,这里涉及到如何将时间显示在x轴上,稍微复杂一些。
import datetime def draw_rate(datas): fig, ax = plt.subplots(1, 1, figsize=(15,5)) //时间范围比较大,将图片设长一些 ax.spines['right'].set_visible(False) ax.set_ylim(0, 100) //y轴显示的是百分比的数字,所以这里将y轴的范围设在0-100 plt.yticks(range(0, 101, 25), fontsize=14) //y轴显示数字,这种设法y轴只会出现0、25、50、75、100这5个数字 majors = ['line1', 'line2'] //两条线的名称 percents = [[], []] //存储两条线的数据 times = [] //时间列表 for data in datas: times.append(datetime.datetime.fromtimestamp(data['time'])) //data['time']是时间戳,这里讲时间戳转换成python的datetime格式。 percents[0].append(data['line1']) //第一条线的数据 percents[1].append(data['line2']) //第二条线的数据 for i, column in enumerate(majors): ax.plot(times, percents[i], label=majors[i]) //遍历画两条线 xfmt = dates.DateFormatter('%Y-%m-%d %H:%M') //创建显示的时间格式 ax.xaxis.set_major_formatter(xfmt) //将设好的时间格式应用给x轴 fig.autofmt_xdate() //斜着显示时间,节约空间 plt.ylabel(u'\u0079\u8f74', fontproperties=myfont)//y轴说明 plt.legend(loc=4, borderaxespad=0., prop=myfont)//在4号位显示两条线的名称和颜色 plt.savefig(os.path.join(IMAGE_URL, 'image_name')) plt.close()
4. 竖状图
这个比较简单,属于最基本的matplotlib图形之一。
def draw_bar(datas): fig, ax = plt.subplots(1, 1, figsize=(15, 5)) y_datas = [] times = [] for data in datas: times.append(datetime.datetime.fromtimestamp(data['time'])) //将时间戳转换成datetime y_datas.append(data['value']) ax.bar(times, transcounts) xfmt = dates.DateFormatter('%Y-%m-%d %H:%M') //x轴是时间,这里创建一个时间格式 ax.xaxis.set_major_formatter(xfmt) fig.autofmt_xdate() plt.savefig(os.path.join(IMAGE_URL, 'image_name')) plt.close()
官方文档有许多可以参考的例子https://matplotlib.org/gallery.html
相关文章推荐
- python matplotlib画图 画多个子图
- Python 3下Matplotlib画图中文显示乱码的解决方法
- 解决Linux系统中python matplotlib画图的中文显示问题
- python中matplotlib和pandas画图
- python 学习5--matplotlib画图实践
- python用matplotlib画图例子(3)
- python3 使用matplotlib画图出现中文乱码的情况
- python 中matplotlib 画图导入到word中如何保证分辨率
- python 安装画图工具matplotlib
- python使用matplotlib画图出现中文乱码
- python3使用matplotlib画图支持中文
- python matplotlib画图
- python中引用matplotlib画图的几个常用命令及基本步骤
- 【Python】Matplotlib画图(三)——分段函数
- Python:Matplotlib 画图
- python画图初体验[matplotlib/pylab]
- python matplotlib 画图知识点列表
- 【Python】Matplotlib画图(十)——基于networkx画关系网络图
- python matplotlib画图细节实现
- python画图包matplotlib