zoukankan      html  css  js  c++  java
  • 可视化分析二

    可视化分析二

    一.今日内容

    编程绘制一个直方图,在图中输出影片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   #这两行需要手动设置

  • 相关阅读:
    SICP习题 1.11 (一个函数的递归与迭代)
    SICP 实例 ExchangeMoney
    SICP 1.2.2 树形递归 与 线性迭代(斐波那契数)
    SICP习题 1.10(Ackermann函数)
    SICP习题 1.9 (递归与迭代初探)
    SICP实例 1.2.1 (阶乘的递归与迭代)
    SICP习题 1.8 (立方根)
    SICP习题 1.7 (求平方根改进)
    SICP习题 1.6 (再探 函数 与 正则序 应用序 关系)
    SICP实例 1.1.7 (求平方根)
  • 原文地址:https://www.cnblogs.com/ningl666/p/13410788.html
Copyright © 2011-2022 走看看