如何使用python绘制条形图,每个条形具有不同的类别?

时间:2019-03-25 04:12:13

标签: python datetime matplotlib bar-chart

我希望统计每天PC的正常运行时间。

因此,我想绘制一个条形图以显示每天的正常运行时间(可能每天启动多次)。

条形图表示总共24小时,如果我的PC在某个时间范围内工作,我希望该条形图的相应区域用red涂成white,反之亦然。

现在,我使用类UptimeRangeInDay来表示一个时间范围,一天中可能会有多个UptimeRangeInDay对象,它们具有相同的self.day但不同的self.start_point and end_point

from dataclasses import dataclass

@dataclass
class UptimeRangeInDay:
    btime: int
    uptime: float

    def __post_init__(self):
        bdate = datetime.datetime.fromtimestamp(self.btime)
        self.day = datetime.datetime(bdate.year, bdate.month, bdate.day)
        self.start_point = (self.btime - self.day.timestamp()) / 86400
        self.end_point = self.start_point + self.uptime / 86400

如果我每天计算总的正常运行时间,然后绘制堆积的条形图,将会更加简单。

但是我希望图表能够显示PC是以小时还是分钟为单位运行。

1 个答案:

答案 0 :(得分:0)

最后,我计算每天的总正常运行时间和停机时间,并标记最大的uptime + downtime。填补前几天多余的服务器正常运行时间和停机时间(花费的时间为0),使其中的uptime + downtime等于最大,然后进行规划。