DrawHelper.py封装类源码:

  1. import matplotlib
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4.  
  5. class DrawHelper:
  6. def __init__(self):
  7. # 指定默认字体 下面三条代码用来解决绘图中出现的乱码
  8. matplotlib.rcParams['font.sans-serif'] = ['SimHei']
  9. matplotlib.rcParams['font.family'] = 'sans-serif'
  10. # 解决负号'-'显示为方块的问题
  11. matplotlib.rcParams['axes.unicode_minus'] = False
  12.  
  13. # 绘制饼状图清除type值为零,同时设置颜色(相同的类型相同的颜色)
  14. def clear_zeroData(self, keys, values):
  15. 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']
  16. keys_list = []
  17. values_list = []
  18. colors_list = []
  19. for i in range(0, len(keys)):
  20. if values[i] != 0:
  21. keys_list.append(keys[i])
  22. values_list.append(values[i])
  23. colors_list.append(colors[i])
  24. return (keys_list,values_list,colors_list)
  25.  
  26. # 绘制折线图
  27. def get_plot(self, key_list, value_list, actor):
  28. index = np.arange(len(key_list))
  29. # 设置画板大小
  30. plt.figure(figsize=(9,9))
  31. # 设置条状图标题
  32. plt.title(actor+'电影类型分布折线图')
  33. plt.xticks(index, key_list)
  34. plt.grid(True)
  35. plt.plot(index,value_list)
  36. # 保存成图片
  37. plt.savefig('images/plot/' + actor + '.png')
  38. plt.close()
  39.  
  40. # 绘制条状图
  41. def get_bar(self, key_list, value_list, actor):
  42. index = np.arange(len(key_list))
  43. # 设置画板大小
  44. plt.figure(figsize=(9,9))
  45. # 设置条状图标题
  46. plt.title(actor + '电影类型分布直方图')
  47. plt.bar(index, value_list, 0.5)
  48. plt.xticks(index, key_list)
  49. plt.grid(True)
  50. plt.savefig('images/bar/' + actor + '.png')
  51. # 关闭图
  52. plt.close()
  53.  
  54. # 绘制饼状图
  55. def get_pie(self, key_list, value_list, actor):
  56. # 调用绘制饼状图清除type值为零,同时设置颜色函数
  57. types_no_zero = self.clear_zeroData(key_list,value_list)
  58. keys = types_no_zero[0]
  59. values = types_no_zero[1]
  60. colors = types_no_zero[2]
  61. # 设置标题
  62. plt.title(actor + '电影类型分布饼状图')
  63. plt.pie(values, labels=keys, colors=colors,shadow=True, autopct='%1.1f%%')
  64. plt.axis('equal')
  65. plt.savefig('images/pie/' + actor + '.png')
  66. # 关闭图
  67. plt.close()

test.py测试:

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

截图:

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

  1. python 中matplotlib 绘图

    python 中matplotlib 绘图 数学建模需要,对于绘图进行简单学习 matpoltlib之类的包安装建议之间用anaconda 绘制一条y=x^2的曲线 #比如我们要绘制一条y=x^2的曲 ...

  2. HighCharts之2D堆条状图

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

  3. HighCharts之2D条状图

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

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

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

  5. Flex实现双轴条状图

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

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

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

  7. python之matplotlib绘图基础

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

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

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

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

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

随机推荐

  1. (转)ASP.NET MVC:Razor 引入命名空间

    页面中引用 c# @using MvcApplication83.Models @using MvcApplication83.Common 行尾不需要加分号,加上也无妨(不过得全加上). VB.Ne ...

  2. 以登录实例简单介绍Servlet使用

    1.简单介绍 Java Servlet 是执行在 Web server或应用server上的程序,使用 Servlet.您能够收集来自网页表单的用户输入.呈现来自数据库或者其它源的记录.还能够动态创建 ...

  3. NOIP2007:纪念品分组

    #include<stdio.h> #include<stdlib.h> int a[100]; int main(){ int i,j,k,m,n,w; scanf(&quo ...

  4. yii xss模型安全

    在这篇文章里,我们将描述一个基于WEB应用下避免不合法的内容注入. 我们要在一个行为里使用htmlpurifier类,用这种行为可以加强任何模型并表明各属性我们想让它们XSS安全. 我写了以下行为: ...

  5. yum中查找程序由哪个包提供

    有时候知道程序的名称,却不知道由那个包提供,也就是说不知道安装那个包,可以使用这个命令. 我们由provides关键字可以使用. 举例:semanage是SELinux的一个管理工具,可是我使用:yu ...

  6. JS 16进制加密解密

    http://www.zc520.cc/js/62.html <script type="text/javascript"> function JavaDe(){ va ...

  7. Objective-C_Block

    一.Block语法 Block:块语法,本质上是匿名函数(没有名称的函数),Block变量存放函数的实现,通过Block变量能直接调⽤函数.标准C里面没有Block.C语言的后期扩展版本号.加⼊了匿名 ...

  8. SlidingMenu开源项目 -- ReadMe.md翻译

    Setup - 安装 1.  在Eclipse里,只需要把库引入Android library project就可以了.选择Project->Clean动作来生成你项目所需要的二进制数据,例如R ...

  9. CRM认识的误区

    众所周知,CRM,就是平时说的“客户关系管理”,指用CRM来管理 企业与客户之间的关系.纵观整个IT圈子,做CRM的厂商比比皆是,每个厂商都有自己的产品宣言,令人眼花缭乱.但是领很多老板们不解的是,我 ...

  10. 第一百四十五节,JavaScript,同步动画

    JavaScript,同步动画 将上一节的,移动透明动画,修改成可以支持同步动画,也就是可以给这个动画方法多个动画任务,让它同时完成 原理: 向方法里添加一个属性,这个属性是一个对象,同步动画属性,属 ...