DrawHelper.py封装类源码:

 import matplotlib
 import matplotlib.pyplot as plt
 import numpy as np

 class DrawHelper:
     def __init__(self):
         # 指定默认字体 下面三条代码用来解决绘图中出现的乱码
         matplotlib.rcParams['font.sans-serif'] = ['SimHei']
         matplotlib.rcParams['font.family'] = 'sans-serif'
         # 解决负号'-'显示为方块的问题
         matplotlib.rcParams['axes.unicode_minus'] = False

     # 绘制饼状图清除type值为零,同时设置颜色(相同的类型相同的颜色)
     def clear_zeroData(self, keys, values):
         colors = ['yellow', 'green', 'red', 'blue', 'black', 'purple', 'pink', 'brown', 'grey', 'yellow', 'green', 'red', 'blue', 'black', 'purple', 'pink', 'brown', 'grey', 'yellow', 'green', 'red', 'blue', 'black', 'purple', 'pink', 'brown', 'grey']
         keys_list = []
         values_list = []
         colors_list = []
         for i in range(0, len(keys)):
             if values[i] != 0:
                 keys_list.append(keys[i])
                 values_list.append(values[i])
                 colors_list.append(colors[i])
         return (keys_list,values_list,colors_list)

     # 绘制折线图
     def get_plot(self, key_list, value_list, actor):
         index = np.arange(len(key_list))
         # 设置画板大小
         plt.figure(figsize=(9,9))
         # 设置条状图标题
         plt.title(actor+'电影类型分布折线图')
         plt.xticks(index, key_list)
         plt.grid(True)
         plt.plot(index,value_list)
         # 保存成图片
         plt.savefig('images/plot/' + actor + '.png')
         plt.close()

     # 绘制条状图
     def get_bar(self, key_list, value_list, actor):
         index = np.arange(len(key_list))
         # 设置画板大小
         plt.figure(figsize=(9,9))
         # 设置条状图标题
         plt.title(actor + '电影类型分布直方图')
         plt.bar(index, value_list, 0.5)
         plt.xticks(index, key_list)
         plt.grid(True)
         plt.savefig('images/bar/' + actor + '.png')
         # 关闭图
         plt.close()

     # 绘制饼状图
     def get_pie(self, key_list, value_list, actor):
         # 调用绘制饼状图清除type值为零,同时设置颜色函数
         types_no_zero = self.clear_zeroData(key_list,value_list)
         keys = types_no_zero[0]
         values = types_no_zero[1]
         colors = types_no_zero[2]
         # 设置标题
         plt.title(actor + '电影类型分布饼状图')
         plt.pie(values, labels=keys, colors=colors,shadow=True, autopct='%1.1f%%')
         plt.axis('equal')
         plt.savefig('images/pie/' + actor + '.png')
         # 关闭图
         plt.close()

test.py测试:

 from DrawHelper import DrawHelper

 types = (['剧情', '喜剧', '爱情', '动作', '犯罪', '武侠', '悬疑', '古装', '科幻', '惊悚', '奇幻', '恐怖', '鬼怪', '冒险', '家庭', '运动', '西部', '传记', '歌舞', '历史', '同性'], [11, 2, 3, 8, 10, 0, 2, 0, 0, 2, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0])
 keys = types[0]
 values = types[1]
 actor = '刘德华'
 DrawHelper().get_bar(keys,values,actor)
 DrawHelper().get_pie(keys,values,actor)
 DrawHelper().get_plot(keys,values,actor)
 print("OK")

截图:

python中matplotlib绘图封装类之折线图、条状图、圆饼图的更多相关文章

  1. HighCharts之2D堆条状图

    HighCharts之2D堆条状图 1.HighCharts之2D堆条状图源码 StackedBar.html: <!DOCTYPE html> <html> <head ...

  2. HighCharts之2D条状图

    HighCharts之2D条状图 1.HighCharts之2D条状图源码 bar.html: <!DOCTYPE html> <html> <head> < ...

  3. Excel 2010高级应用-条状图(五)

    Excel 2010高级应用-条状图(五) 基本操作如下: 1.新建一个Excel空白文档,并命名条状图 2.单击"插入",找到条状图的样图 3.选择其中一种类型的条状图样图,在空 ...

  4. Flex实现双轴条状图

    1.问题背景 一般的,柱状图可以实现双轴图,但是如何实现双轴条状图? 2.实现实例 <?xml version="1.0" encoding="utf-8" ...

  5. python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)

    最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指 ...

  6. python之matplotlib绘图基础

    Python之matplotlib基础 matplotlib是Python优秀的数据可视化第三方库 matplotlib库的效果可参考 http://matplotlib.org/gallery.ht ...

  7. swift app中展示折线图, 饼状图, 柱状图等数据图表

    github 下载Charts-master SDK,该SDK有多种可自定义的图表样式 lineChart 正弦余弦线图 LineChart (cubic lines) LineChart (grad ...

  8. canvas制作柱形图/折线图/饼状图,Konva写动态饼状图

    制作饼状图 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  9. D3.js系列——布局:弦图和集群图/树状图

    一.弦图 1.弦图是什么 弦图(Chord),主要用于表示两个节点之间的联系的图表.两点之间的连线,表示谁和谁具有联系. 2.数据 初始数据为: var city_name = [ "北京& ...

随机推荐

  1. Leetcode 306. Additive Number

    Additive number is a string whose digits can form additive sequence. A valid additive sequence shoul ...

  2. Oralce 常用语句

    注:大写代表需要替换掉额 --更新字段名 alter table TABLE rename column COL_OLD to COL_NEW --添加字段名 alter table TABLE ad ...

  3. poj2115-C Looooops(扩展欧几里德算法)

    本题和poj1061青蛙问题同属一类,都运用到扩展欧几里德算法,可以参考poj1061,解题思路步骤基本都一样.一,题意: 对于for(i=A ; i!=B ;i+=C)循环语句,问在k位存储系统中循 ...

  4. [USACO2004][poj2373]Dividing the Path(DP+单调队列)

    http://poj.org/problem?id=2373 题意:一条直线分割成N(<=25000)块田,有一群奶牛会在其固定区域吃草,每1把雨伞可以遮住向左右延伸各A到B的区域,一只奶牛吃草 ...

  5. 二分查找和hash查找

    转载:http://blog.csdn.net/feixiaoxing/article/details/6844723 无论是数据库,还是普通的ERP系统,查找功能数据处理的一个基本功能.数据查找并不 ...

  6. C语言实现memcpy和memmove

    0.两者比较: memmove用于从src拷贝count个字符到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中.但复制后src内容会被 ...

  7. [CSS3]学习笔记-文字与字体相关样式

    1.给文字添加阴影 <!doctype html> <html> <head> <meta charset="utf-8"> < ...

  8. 未来工厂——电器行业ERP案例

    江苏科兴电器有限公司位于全国著名的“银杏之乡”泰兴市南首,主要生产35kV及以下电流.电压互感器等系列产品.产品多次经国家及省市技术监督部门抽检合格,广泛应用于国家重点工程.“COSINE”商标荣获泰 ...

  9. GCD之死锁体会

    1.先看下几句代码 1 2 3 4 5 6 7 dispatch_queue_t serialqueue=dispatch_queue_create("serialqueue", ...

  10. 使用CCS调试基于AM335X的SPL、Uboot(原创)

    使用CCS调试基于AM335X的SPL.Uboot 一.开发环境 1.硬件平台:创龙AM3359核心板 2.SDK版本:ti-processor-sdk-linux-am335x-evm-03.00. ...