[Python]用matplotlib画以时间日期为x轴的图像



原创文章,欢迎转载。转载请注明:转载自 祥的博客

原文链接:https://blog.csdn.net/humanking7/article/details/80802435



1.效果展示

主要效果就是,x轴 显示时间单位。
下图展示的就是想要到达的效果。
其实主要是运用了datetime.date这个类型的变量作为x轴坐标的数据输入。

pic1

2. 源码

data.txt中的数据读入,用matplotlib中的pyplot画出,x轴为时间。

数据文本 data.txt,除了第一行表头外,每一列都用制表符Tab\t)隔开。

         原创 粉丝 喜欢 评论 等级 访问 积分    排名
2018/06/01  69  134 266 64  5   309132  3345    12956   
2018/06/05  72  137 267 65  5   312383  3390    12832   
2018/06/10  74  141 268 68  5   316417  3432    12629   
2018/06/11  75  142 269 69  5   317327  3448    12629   
2018/06/14  76  148 270 70  5   319695  3469    12499   
2018/06/15  79  149 278 73  5   320697  3514    12590   

2018/06/23  84  149 278 73  5   325308  3582    12186   
2018/06/24  84  149 278 73  5   325583  3583    12233   
2018/06/25  84  149 278 73  5   326008  3584    12038   
2018/06/25  84  149 279 73  5   326039  3584    12038   

程序源码:

# read csdn data
from datetime import datetime 
import matplotlib.pyplot as plt #引入绘图库


if __name__ == '__main__':

    # 打开文本文件 读取数据
    with open("data.txt",'r',encoding='utf-8') as f:
        data_lines = f.readlines()

    l_time    = []
    l_article = []
    l_fans    = []
    l_like    = []
    l_remark  = []
    l_level   = []
    l_visit   = []
    l_score   = []
    l_rank    = []

    num = len(data_lines)

    # ################
    #     整理数据
    # ################
    for i in range(1,num):
        line = data_lines[i]#从第1行开始[0行开始计数]
        if len(line) < 2:
            continue    #这行明显不是有效信息

        data = line.split('\t')
        time = data[0]
        # 使用最新日期的数据
        if len(l_time) != 0:
            if time == l_time[-1]:#如果这一行时间与上一行的时间相等,删除上一行数据
                print('删除上一行:' + time)
                l_time.pop(-1) #删除上一行记录的数据
                l_article.pop(-1)
                l_fans.pop(-1)
                l_like.pop(-1)
                l_remark.pop(-1)
                l_level.pop(-1)
                l_visit.pop(-1)
                l_score.pop(-1)
                l_rank.pop(-1)


        arti = int(data[1])
        fans = int(data[2])
        like = int(data[3])
        rmak = int(data[4])
        leve = int(data[5])
        visi = int(data[6])
        scor = int(data[7])
        rank = int(data[8])
        l_time.append(time)
        l_article.append(arti)
        l_fans.append(fans)
        l_like.append(like)
        l_remark.append(rmak)
        l_level.append(leve)
        l_visit.append(visi)
        l_score.append(scor)
        l_rank.append(rank)

    # ################
    #       画图
    # ################
    # X坐标,将str类型的数据转换为datetime.date类型的数据,作为x坐标
    xs = [datetime.strptime(d, '%Y/%m/%d').date() for d in l_time]

    plt.figure(1)
    plt.subplot(1, 3, 1)
    plt.title('Visit Number')
    plt.plot(xs, l_visit, 'o-')
    plt.xlabel('Time')
    plt.ylabel('Visit Number')

    # 只画最后一个元素点 - 数据点在文字的↘右下,文字在↖左上
    plt.text(xs[-1], l_visit[-1], l_visit[-1], ha='right', va='bottom', fontsize=10)


    plt.subplot(1, 3, 2)
    plt.title('Rank')
    plt.plot(xs, l_rank, 'o-')
    plt.xlabel('Time')
    plt.ylabel('Rank')
    # 只画最后一个元素点 - 数据点在文字的↗右上,文字在↙左下
    plt.text(xs[-1], l_rank[-1], l_rank[-1], ha='right', va='top', fontsize=10)



    plt.subplot(1, 3, 3)
    plt.title('Score')
    plt.plot(xs, l_score, 'o-')
    plt.xlabel('Time')
    plt.ylabel('Score')
    # 只画最后一个元素点 - 数据点在文字的↘右下,文字在↖左上
    plt.text(xs[-1], l_score[-1], l_score[-1], ha='right', va='bottom', fontsize=10)


    plt.gcf().autofmt_xdate()  # 自动旋转日期标记

    # show
    plt.show()

3. 分析

主要就是matplotlib.pyplot()可以支持datatime.date类型的变量。

datetime.strptime(str, '%Y/%m/%d').date()

在shell里的运行情况:

In [5]: var = datetime.strptime('2018/3/15', '%Y/%m/%d').date()

In [6]: var
Out[6]: datetime.date(2018, 3, 15)

In [7]: type(var)
Out[7]: datetime.date

所以,源码中变量xs为含有一群datetime.date变量的list


赞赏码New

  • 19
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Python可以使用matplotlib库来画出柱状图。具体步骤如下: 1. 导入matplotlib库 ```python import matplotlib.pyplot as plt ``` 2. 准备数据 ```python x = ['A', 'B', 'C', 'D', 'E'] y = [10, 20, 30, 40, 50] ``` 3. 绘制柱状图 ```python plt.bar(x, y) plt.show() ``` 其中,plt.bar()函数用于绘制柱状图,第一个参数为x数据,第二个参数为y数据。 最后使用plt.show()函数显示图形。 ### 回答2: Python是一种流行的编程语言,而matplotlibPython中最常用的可视化库之一。它可以用来创建各种不同类型的图表,包括柱状图。下面我们将详细介绍如何使用Matplotlib库创建柱状图。 ## 步骤1:安装MatplotlibMatplotlib库是Python安装包的一部分,如果您已经安装了Python,那么Matplotlib库应该已经安装了。但如果您发现没有,可以在命令行中使用以下命令进行安装: ``` pip install matplotlib ``` ## 步骤2:准备数据 在绘制柱状图之前,我们需要准备数据。柱状图一般用于展示不同类别之间的数量差异,因此需要至少2个类别的数据。这里我们使用一个简单的示例数据,展示不同城市的人口数量: ``` import matplotlib.pyplot as plt cities = ['Shanghai', 'Beijing', 'Guangzhou', 'Shenzhen'] population = [24256800, 21516000, 14043500, 12528300] ``` ## 步骤3:创建图表 现在我们可以创建一个图表,用于展示这个数据了。使用Matplotlib库,我们可以使用`plt.bar()`函数创建一个柱状图,这个函数需要两个参数: * 第一个参数是所有柱子的X坐标。 * 第二个参数是所有柱子的高度。 ``` plt.bar(cities, population) ``` ## 步骤4:添加标题和标签 为了让我们的图表更加清晰地表达数据,我们可以添加一些标题和标签。使用`plt.title()`函数添加标题,使用`plt.xlabel()`和`plt.ylabel()`函数添加X和Y的标签。 ``` plt.title('City Populations') plt.xlabel('Cities') plt.ylabel('Population') ``` ## 步骤5:显示图表 最后一步是使用`plt.show()`函数显示我们的图表。 ``` plt.show() ``` 这就是用Matplotlib库创建柱状图的完整过程了。使用这些步骤,可以创建各种不同类型的柱状图,以及添加其他自定义样式和大量其他的数学图表。 ### 回答3: Python 是一种非常流行的编程语言,被广泛应用于数据分析和可视化。其中,MatplotlibPython 中常用的数据可视化库之一,可用于绘制多种图形,包括折线图、散点图、饼图、柱状图等。以下是介绍如何使用 PythonMatplotlib 库画柱状图。 1. 导入模块 在绘制柱状图之前,首先需要导入 Matplotlib 的模块,一般可以使用以下语句进行导入: ```python import matplotlib.pyplot as plt ``` 2. 准备数据 绘制柱状图需要准备一些数据,这些数据可以是 Python 的列表、元组或 NumPy 数组等。以下是使用列表进行数据准备的一个示例: ```python # 定义 x 数据 x_data = ['A', 'B', 'C', 'D', 'E'] # 定义 y 数据 y_data = [10, 20, 30, 15, 25] ``` 3. 绘制柱状图 有了数据之后,就可以开始绘制柱状图了。Matplotlib 库提供了一个 `bar()` 函数,该函数可以用来绘制柱状图。以下是如何使用 `bar()` 函数进行绘图的示例代码: ```python # 绘制柱状图 plt.bar(x_data, y_data) # 添加标题和标签 plt.title('柱状图示例') plt.xlabel('X ') plt.ylabel('Y ') # 显示图像 plt.show() ``` 运行以上代码,就可以得到一个简单的柱状图,如下所示: ![柱状图示例](https://img-blog.csdn.net/20180719131333220?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9jaHVhbmdkZWZhdWx0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/85/images/blogpython.jpeg) 4. 指定柱状图的模式和颜色 除了上面的示例,我们还可以通过修改参数,指定柱状图的模式和颜色。一般可以使用以下参数进行设置: - `width`:柱状图的宽度 - `color`:柱状图的颜色 - `edgecolor`:柱状图的边框颜色 - `align`:柱状图的对齐方式 以下是使用以上参数绘制柱状图的示例代码: ```python # 定义柱状图的宽度 width = 0.5 # 定义柱状图的颜色 color = ['r', 'g', 'b', 'm', 'c'] # 绘制柱状图 plt.bar(x_data, y_data, width=width, color=color, edgecolor='k', align='center') # 添加标题和标签 plt.title('柱状图示例') plt.xlabel('X ') plt.ylabel('Y ') # 显示图像 plt.show() ``` 运行以上代码,就可以得到一张更加个性化的柱状图了,如下所示: ![柱状图示例](https://img-blog.csdn.net/20180719131350544?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9jaHVhbmdkZWZhdWx0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/85/images/blogpython_color.jpeg) 总之,使用 PythonMatplotlib 库绘制柱状图非常简单,只需要几行代码就可以完成,甚至还可以进行更多的个性化设置,帮助我们更好地展示数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值