python 绘制图表生成svg文件_svgwrite-【一款python画SVG模块】

在python中,有一模块称之为svgwrite,利用该模块可自行定义画svg图片,比如可以画共线性关系图,遗传图等。

01/安装pip install svgwrite

基本图形如下:线条 line

矩阵 rect

圆 circle

椭圆 ellipse

多线条 polyline

多边形 polygon

文本 text

02/使用

线条# 首先导入该模块import svgwrite# 构建一长宽各400的画布,命名为test.svgdwg = svgwrite.Drawing("test.svg", profile="full", width = 400,height=400)# 画一线条宽度为3,红色线条dwg.add(dwg.line(start=(100, 100), end=(200, 100), stroke="red",stroke_width=3))# start 为线条的起始坐标,end为结尾坐标,其坐标原点为左上方# # stroke 线条颜色# stroke_width 线条宽度# 保存图片dwg.save()

矩阵#在此基础上,在线条下面画一矩阵dwg.add(dwg.rect(insert=(100,110),size=(100,100),rx =15,ry=15,fill="red",stroke="black", stroke_width=3))# insert 为矩阵d 坐上角的坐标# size 为矩阵的长和宽# rx,ry 为长和宽平滑角度&#

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现这个需求,你需要掌握以下几个步骤: 1. 读取csv文件 2. 解析每行数据,提取出点赞数和日期信息 3. 按照月份对点赞数进行统计 4. 使用matplotlib库绘制折线图 5. 将绘制好的图表嵌入到网页中 下面我们一步一步来实现。 首先,读取csv文件可以使用Python内置的csv库。假设你的csv文件长这样: ``` 日期,点赞数 2021-01-01,10 2021-01-02,8 2021-02-01,12 2021-02-03,7 2021-03-04,15 ``` 你可以用以下代码读取: ```python import csv with open('data.csv') as f: reader = csv.DictReader(f) rows = list(reader) ``` 这里使用了`csv.DictReader`,它可以将csv文件的每一行解析成一个字典,字典的键是文件第一行中的列名。 接下来,我们需要解析每行数据,提取出点赞数和日期信息。假设你的csv文件中日期的格式是`YYYY-MM-DD`,那么可以使用Python内置的datetime库来处理日期时间。以下是代码: ```python from datetime import datetime likes_by_month = {} for row in rows: date_str = row['日期'] like_count = int(row['点赞数']) date = datetime.strptime(date_str, '%Y-%m-%d') month = date.strftime('%Y-%m') if month not in likes_by_month: likes_by_month[month] = [] likes_by_month[month].append(like_count) ``` 这里使用了一个字典`likes_by_month`,它的键是每个月份的字符串,值是一个列表,列表中存储了这个月份内的所有点赞数。注意,这里假设每个月份内的点赞数是可以累加的。 接下来,我们需要对每个月份内的点赞数进行统计。这里我们可以使用Python内置的statistics库,具体来说是使用statistics.mean函数计算每个月份的平均点赞数。以下是代码: ```python from statistics import mean month_list = [] like_mean_list = [] for month, like_list in likes_by_month.items(): month_list.append(month) like_mean_list.append(mean(like_list)) ``` 这里我们将每个月份的字符串和它的平均点赞数分别存储在了两个列表`month_list`和`like_mean_list`中。 现在我们有了每个月份的平均点赞数,接下来就可以使用matplotlib库绘制折线图了。以下是代码: ```python import matplotlib.pyplot as plt plt.plot(month_list, like_mean_list) plt.xlabel('Month') plt.ylabel('Likes') plt.title('Monthly Likes') plt.show() ``` 这里我们使用了`plt.plot`函数来绘制折线图,`plt.xlabel`和`plt.ylabel`用于设置x轴和y轴的标签,`plt.title`用于设置图表标题,`plt.show`用于显示图表。 最后,我们需要将绘制好的图表嵌入到网页中。这里我们可以使用Matplotlib的webagg后端,它可以将图表嵌入到Flask或Django等web框架中。以下是代码: ```python from flask import Flask from matplotlib.backends.backend_webagg import FigureCanvasWebAgg as FigureCanvas app = Flask(__name__) @app.route('/likes') def likes(): fig, ax = plt.subplots() ax.plot(month_list, like_mean_list) ax.set_xlabel('Month') ax.set_ylabel('Likes') ax.set_title('Monthly Likes') canvas = FigureCanvas(fig) return canvas.print_figure(format='svg') if __name__ == '__main__': app.run(debug=True) ``` 这里我们使用了Flask框架,定义了一个路由`/likes`,当用户访问这个路由时,会返回一个SVG格式的图表。注意,这里我们使用了`FigureCanvasWebAgg`来创建图表布,它可以将图表渲染为SVG格式。 以上就是实现统计csv文件每个月的点赞数字段并绘制折线图在网页上的全部步骤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值