• 可视化分析二


    可视化分析二

    一.今日内容

    编程绘制一个直方图,在图中输出影片ABC的周平均票房(文件中的所有涉及地区周票房总平均),Y轴表示票房收入,单位万元;X轴表示电影名称,电影名称的排列从左至右以ABC为准,要求将输出的直方图保存成图像文件ans0302.jpg,程序源代码保存成ans0302.py,另外,将三部电影各自的票房总收入按自高到低的顺序存入ans0302.dat文件中,要求ans0302.dat中只包含3个浮点型票房数据,以万元为单位,保留6位小数,数据以英文逗号分隔,不换行,文件样例如下:

    23.123456,20.654321,18.123456

    对本题周票房的说明如下:若某部电影从某月2日开始上映,则从当月2日到8日为其第1周票房,9日至15日为其第2周票房,不满1周按1周计算以此类推。

    二.内容源码

    import datetime
    import math
    from numpy import long

    filmA = "《简单爱》"
    filmB = "《少年班》"
    filmC = "《冲上云霄》"

    def avgpiaofang(film):
        with open(r"C:UsersliuDesktopargfilm_log3.csv", "r", encoding="utf8") as file:
            s = file.readlines()
            for i in s:
                ss = i.split(";")
                if ss[0].startswith(film):
                    date1 = ss[1]
                    date2 = ss[2]
                    piaofang = ss[len(ss) - 2][5:]
                    break;
        day1 = datetime.date(*map(int, date1.split('.')))
        day2 = datetime.date(*map(int, date2.split('.')))
        day = (day2 - day1).days
        week = math.ceil(day / 7)
        avg = float(piaofang) / week
        avg = format(avg, '.6f')
        return avg

    if __name__ == '__main__':
        a = avgpiaofang(filmA)
        b = avgpiaofang(filmB)
        c = avgpiaofang(filmC)

        with open("ans0302.dat", "w", encoding="utf8") as file:
            file.write(str(a) + "," + str(b) + "," + str(c))

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

    filmA = "《简单爱》"
    filmB = "《少年班》"
    filmC = "《冲上云霄》"

    lables = [filmA, filmB, filmC]   #x标签
    yticks1 = [77.566667, 101.340000, 260.550000]  #y轴数据

    width = 0.3

    fig, ax = plt.subplots()
    rects1 = ax.bar(lables, yticks1, width=0.3, bottom=None, align="center")
    plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签
    plt.rcParams['axes.unicode_minus']=False   #这两行需要手动设置

    fig.tight_layout()
    plt.show()

     

    三.遇到问题

     

    四.解决方案

    根据百度,发现原来是中文字符的原因,需要在加上两行代码

    plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签
    plt.rcParams['axes.unicode_minus']=False   #这两行需要手动设置

  • 相关阅读:
    18 | 案例篇:内存泄漏了,我该如何定位和处理?
    17 | 案例篇:如何利用系统缓存优化程序的运行效率?
    16 | 基础篇:怎么理解内存中的Buffer和Cache?
    Scrapyd 改进第一步: Web Interface 添加 charset=UTF-8, 避免查看 log 出现中文乱码
    scrapy_redis 相关: 将 jobdir 保存的爬虫进度转移到 Redis
    lxml.etree.HTML(text) 解析HTML文档
    CSS/Xpath 选择器 第几个子节点/父节点/兄弟节点
    scrapy_redis 相关: 查看保存的数据
    scrapy 通过FormRequest模拟登录再继续
    python2 python3 转换,兼容
  • 原文地址:https://www.cnblogs.com/ningl666/p/13410788.html
Copyright © 2020-2023  润新知