• python中matplotlib绘图封装类之折线图、条状图、圆饼图


    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")

    截图:

  • 相关阅读:
    每日一练leetcode
    java 中 int与string的相互转化
    每日一练leetcode
    每日一题leetcode
    每日一练leetcode
    每日一练leetcode
    每日一题leetcode
    Three20在IOS6中不能正常使用 迎客
    苹果提供的支付功能接口 迎客
    ios随记 迎客
  • 原文地址:https://www.cnblogs.com/xiaomingzaixian/p/7248635.html
Copyright © 2020-2023  润新知