0.导入数据

import numpy as np
import pandas as pd
import pymysql
from pyecharts import options as opts
from pyecharts.charts import Bar, Line, Grid
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeTypeconn = pymysql.connect(host = '127.0.0.1',user = 'root',password = '123',database = 'cloudmusic',charset = 'utf8'
)df = pd.read_sql("select * from playlists", con=conn)

year_df = df.groupby(df['create_time'].str[:4]).sum()
year_df

year_df = year_df.loc['2013':,:]

1.基本折线图

(Line().add_xaxis(xaxis_data=year_df.index.tolist()).add_yaxis(series_name = "歌曲数",y_axis = year_df.tracks_num.tolist(),symbol = "emptyCircle",is_symbol_show = True,label_opts = opts.LabelOpts(is_show=False),).set_global_opts(xaxis_opts = opts.AxisOpts(type_="category"),yaxis_opts = opts.AxisOpts(type_ = "value",axistick_opts = opts.AxisTickOpts(is_show=True),splitline_opts = opts.SplitLineOpts(is_show=True),),title_opts = opts.TitleOpts(title="基本折线图")).render_notebook()
)

2.Log折线图

(Line(init_opts = opts.InitOpts(width="1000px")).add_xaxis(xaxis_data=year_df.index.tolist()).add_yaxis(series_name = "log(播放量)",y_axis = year_df.play_count.tolist(),linestyle_opts = opts.LineStyleOpts(width=2)).add_yaxis(series_name = "log(收藏量)",y_axis = year_df.subscribed_count.tolist(),linestyle_opts = opts.LineStyleOpts(width=2)).set_global_opts(title_opts = opts.TitleOpts(title="对数轴"),xaxis_opts = opts.AxisOpts(type_="category", name="x"),yaxis_opts = opts.AxisOpts(type_="log",name="y",splitline_opts = opts.SplitLineOpts(is_show=True),is_scale = True,),).render_notebook()
)

3.双折线图

(Line().add_xaxis(xaxis_data=year_df.index.tolist()).add_yaxis(series_name = "分享量",y_axis = year_df.share_count.tolist(),is_smooth = True,markpoint_opts = opts.MarkPointOpts(data = [opts.MarkLineItem(type_="max", name="最大值", symbol_size=100),opts.MarkLineItem(type_="min", name="最小值", symbol_size=100),]),markline_opts = opts.MarkLineOpts(data = [opts.MarkLineItem(type_="average", name="平均值")]),).add_yaxis(series_name = "评论数",y_axis = year_df.comment_count.tolist(),is_smooth = True,markline_opts = opts.MarkLineOpts(data = [opts.MarkLineItem(type_="average", name="平均值"),opts.MarkLineItem(symbol="none", x="90%", y="max"),opts.MarkLineItem(type_="max", name="最高点"),]),).set_global_opts(title_opts = opts.TitleOpts(title="堆叠折线图"),tooltip_opts = opts.TooltipOpts(trigger="axis"),toolbox_opts = opts.ToolboxOpts(is_show=True),xaxis_opts = opts.AxisOpts(type_="category", boundary_gap=False),).render_notebook()
)

4.面积图

(Line().add_xaxis(year_df.index.tolist()).add_yaxis("分享量", year_df.share_count.tolist(), is_smooth=True).add_yaxis("评论数", year_df.comment_count.tolist(), is_smooth=True).set_global_opts(title_opts = opts.TitleOpts(title="面积图-紧贴Y轴"),xaxis_opts = opts.AxisOpts(axistick_opts = opts.AxisTickOpts(is_align_with_label=True),is_scale = False,boundary_gap = False,)).set_series_opts(areastyle_opts = opts.AreaStyleOpts(opacity=0.5),label_opts = opts.LabelOpts(is_show=False),).render_notebook()
)

5.颜色渐变折线图

background_color_js = ("new echarts.graphic.LinearGradient(0,0,0,1,""[{offset: 0, color: '#c86589'}, {offset: 1, color: '#06a7ff'}], false)"
)area_color_js = ("new echarts.graphic.LinearGradient(0,0,0,1,""[{offset: 0, color: '#eb64fb'}, {offset: 1, color: '#3fbbff0d'}], false)"
)line = (Line(init_opts=opts.InitOpts(bg_color=JsCode(background_color_js))).add_xaxis(xaxis_data=year_df.index.tolist()).add_yaxis(series_name = "歌曲数",y_axis = year_df.tracks_num.tolist(),is_smooth = True,is_symbol_show = True,symbol = "circle",symbol_size = 6,linestyle_opts = opts.LineStyleOpts(color="#fff"),label_opts = opts.LabelOpts(is_show=True, position="top", color="white"),itemstyle_opts= opts.ItemStyleOpts(color="red", border_color="#fff", border_width=3),tooltip_opts = opts.TooltipOpts(is_show=False),areastyle_opts = opts.AreaStyleOpts(color=JsCode(area_color_js), opacity=1),).set_global_opts(title_opts = opts.TitleOpts(title = "歌单歌曲数",pos_bottom = "5%",pos_left = "center",title_textstyle_opts = opts.TextStyleOpts(color="#fff", font_size=16),),xaxis_opts = opts.AxisOpts(type_ = "category",boundary_gap = False,axislabel_opts = opts.LabelOpts(margin=30, color="#ffffff63"),axisline_opts = opts.AxisLineOpts(is_show=False),axistick_opts = opts.AxisTickOpts(is_show = True,length = 25,linestyle_opts = opts.LineStyleOpts(color="#ffffff1f"),),splitline_opts = opts.SplitLineOpts(is_show=True, linestyle_opts=opts.LineStyleOpts(color="#ffffff1f")),),yaxis_opts = opts.AxisOpts(type_ = "value",position = "right",axislabel_opts = opts.LabelOpts(margin=20, color="#ffffff63"),axisline_opts = opts.AxisLineOpts(linestyle_opts = opts.LineStyleOpts(width=2, color="#fff")),axistick_opts = opts.AxisTickOpts(is_show = True,length = 15,linestyle_opts = opts.LineStyleOpts(color="#ffffff1f")),splitline_opts = opts.SplitLineOpts(is_show=True, linestyle_opts=opts.LineStyleOpts(color="#ffffff1f")),),legend_opts =  opts.LegendOpts(is_show=False),))(Grid().add(line,grid_opts = opts.GridOpts(pos_top = "20%",pos_left = "10%",pos_right = "10%",pos_bottom = "15%",is_contain_label = True,),).render_notebook()
)

6.区域颜色折线图

df2019 = df[df['create_time'].str[:4]=="2019"]
month2019 = df2019.groupby(df2019["create_time"].str[5:7]).count()["id"]

(Line().add_xaxis(xaxis_data=month2019.index.tolist()).add_yaxis(series_name = "歌单数",y_axis = month2019.tolist(),is_smooth = True,label_opts = opts.LabelOpts(is_show=False),linestyle_opts = opts.LineStyleOpts(width=2),).set_global_opts(title_opts = opts.TitleOpts(title="2019年创建的歌单数"),tooltip_opts = opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),xaxis_opts = opts.AxisOpts(boundary_gap=False),yaxis_opts = opts.AxisOpts(axislabel_opts = opts.LabelOpts(formatter="{value} W"),splitline_opts = opts.SplitLineOpts(is_show=True),),visualmap_opts = opts.VisualMapOpts(is_piecewise = True,dimension = 0,pieces = [{"lte": 2, "color": "#f47a75"},{"gt": 2, "lte": 6, "color": "#009db2"},{"gt": 6, "lte": 8, "color": "#f47a75"},{"gt": 8, "color": "#009db2"},],),).set_series_opts(markarea_opts = opts.MarkAreaOpts(data = [opts.MarkAreaItem(name="冬季", x=(0, 2)),opts.MarkAreaItem(name="夏季", x=(6, 8)),])).render_notebook())

7.堆积面积图

df[df['create_time'].str[:4]=="2015"].groupby(df[df['create_time'].str[:4]=="2015"]["create_time"].str[5:7]).count()["id"]

(Line().add_xaxis(xaxis_data=month2019.index.tolist()).add_yaxis(series_name="2015",stack="总量",y_axis=df[df['create_time'].str[:4]=="2015"].groupby(df[df['create_time'].str[:4]=="2015"]["create_time"].str[5:7]).count()["id"].tolist(),areastyle_opts=opts.AreaStyleOpts(opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).add_yaxis(series_name="2016",stack="总量",y_axis=df[df['create_time'].str[:4]=="2016"].groupby(df[df['create_time'].str[:4]=="2016"]["create_time"].str[5:7]).count()["id"].tolist(),areastyle_opts=opts.AreaStyleOpts(opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).add_yaxis(series_name="2017",stack="总量",y_axis=df[df['create_time'].str[:4]=="2017"].groupby(df[df['create_time'].str[:4]=="2017"]["create_time"].str[5:7]).count()["id"].tolist(),areastyle_opts=opts.AreaStyleOpts(opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).add_yaxis(series_name="2018",stack="总量",y_axis=df[df['create_time'].str[:4]=="2018"].groupby(df[df['create_time'].str[:4]=="2018"]["create_time"].str[5:7]).count()["id"].tolist(),areastyle_opts=opts.AreaStyleOpts(opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).add_yaxis(series_name="2019",stack="总量",y_axis=df[df['create_time'].str[:4]=="2019"].groupby(df[df['create_time'].str[:4]=="2019"]["create_time"].str[5:7]).count()["id"].tolist(),areastyle_opts=opts.AreaStyleOpts(opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).set_global_opts(title_opts=opts.TitleOpts(title="堆叠区域图"),tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),yaxis_opts=opts.AxisOpts(type_="value",axistick_opts=opts.AxisTickOpts(is_show=True),splitline_opts=opts.SplitLineOpts(is_show=True),),xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),).render_notebook()
)

8.双轴折线图

df[df["create_time"].str[:4]=="2019"].groupby(df["create_time"].str[:7]).count()["id"]

js_formatter = """function (params) {console.log(params);return '歌单数  ' + params.value + (params.seriesData.length ? ':' + params.seriesData[0].data : '');}"""(Line().add_xaxis(xaxis_data = df[df["create_time"].str[:4]=="2019"].groupby(df["create_time"].str[:7]).count()["id"].index.tolist(),).extend_axis(xaxis_data = df[df["create_time"].str[:4]=="2018"].groupby(df["create_time"].str[:7]).count()["id"].index.tolist(),xaxis = opts.AxisOpts(type_ = "category",axistick_opts = opts.AxisTickOpts(is_align_with_label=True),axisline_opts = opts.AxisLineOpts(is_on_zero=False, linestyle_opts=opts.LineStyleOpts(color="#6e9ef1")),axispointer_opts = opts.AxisPointerOpts(is_show=True, label=opts.LabelOpts(formatter=JsCode(js_formatter))),),).add_yaxis(series_name = "2018年歌单数",y_axis = df[df["create_time"].str[:4]=="2018"].groupby(df["create_time"].str[:7]).count()["id"].tolist(),is_smooth = True,symbol = "emptyCircle",is_symbol_show = False,color = "#d14a61",label_opts = opts.LabelOpts(is_show=False),linestyle_opts = opts.LineStyleOpts(width=2),).add_yaxis(series_name = "2019年歌单数",y_axis = df[df["create_time"].str[:4]=="2019"].groupby(df["create_time"].str[:7]).count()["id"].tolist(),is_smooth = True,symbol = "emptyCircle",is_symbol_show = False,color = "#6e9ef1",label_opts = opts.LabelOpts(is_show=False),linestyle_opts = opts.LineStyleOpts(width=2),).set_global_opts(legend_opts=opts.LegendOpts(),tooltip_opts=opts.TooltipOpts(trigger="none", axis_pointer_type="cross"),xaxis_opts=opts.AxisOpts(type_="category",axistick_opts=opts.AxisTickOpts(is_align_with_label=True),axisline_opts=opts.AxisLineOpts(is_on_zero=False, linestyle_opts=opts.LineStyleOpts(color="#d14a61")),axispointer_opts=opts.AxisPointerOpts(is_show=True, label=opts.LabelOpts(formatter=JsCode(js_formatter))),),yaxis_opts=opts.AxisOpts(type_="value",splitline_opts=opts.SplitLineOpts(is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)),),).render_notebook()
)

[数据分析笔记] 网易云歌单分析系列03—pyecharts折线图相关推荐

  1. [数据分析笔记] 网易云歌单分析系列02—pyecharts柱状图

    文章目录 0.前言 1.百分比堆叠柱状图 1.1 导入包,连接数据库 1.2 查看数据 1.3 数据预处理 1.4 生成图表 2.复合柱状图和折线图 2.1 数据预处理 2.2 生成图表 3.竖直缩放 ...

  2. Python爬虫爬取豆瓣TOP250和网易云歌单

    python爬虫(网易云)笔记 @(python学习) 先推荐看一下b站的视频链接如下:https://www.bilibili.com/video/BV12E411A7ZQ?from=search& ...

  3. Python爬虫-selenium爬取网易云歌单

    文章目录 (一)工欲善其事必先利其器-安装工具 Selenium 浏览器 (二)实战 (一)工欲善其事必先利其器-安装工具 Selenium Selenium是一个强大的网络数据采集工具,其最初是为网 ...

  4. Python爬虫之网易云歌单音频爬取(解决urlretrieve爬取文件不能播放问题)

    网易云歌单音频爬取 写在前面:最近学习爬虫,对小说和图片都进行过简单爬取,所以打算爬取音频,但是其中遇到点问题也解决了,写下博客记录并希望对大家也有帮助. 爬取对象:对于目前主流的几个音频播放网站,我 ...

  5. Python 将网易云歌单迁移到QQ音乐

    最近,网易云音乐越来越多的歌曲变灰了,许多我以前喜欢听的音乐都消失在云端,非常可惜.最近我还是想听回以前的歌曲,于是只能使用有那些歌曲版权的QQ音乐,麻烦的是,QQ音乐没有我在网易云音乐的歌单,两个软 ...

  6. 爬虫实战(二) 用Python爬取网易云歌单

    最近,博主喜欢上了听歌,但是又苦于找不到好音乐,于是就打算到网易云的歌单中逛逛 本着 "用技术改变生活" 的想法,于是便想着写一个爬虫爬取网易云的歌单,并按播放量自动进行排序 这篇 ...

  7. iTunes音乐导入过程记录(专辑图片、歌手修改,iTunes使用,网易云歌单批量下载)

    所需工具 1.iTunes 2.音乐标签修改器. 3.下载好的音乐 网易云歌单在线下载. 4.一点耐心 详细步骤 1.先调整一下iTunes中的音乐存储位置 菜单栏选编辑-偏好设置-高级 更改iTun ...

  8. 网易云歌单重合率2.0

    前言: 之前写过一个小工具输入网易云音乐上的昵称,即可查看两人喜欢的音乐中,有哪些是相同的,重合率有多少. 感兴趣的可以看这里:网易云歌单重合率1.0 但是之前的版本存在几个问题: 速度慢,这个其实是 ...

  9. 网易云歌单歌曲实时拉取

    网易云歌单歌曲实时拉取 最近个人公众号Mozi的bug日志上线了新的音乐推送API,下面来讲讲推送的实现过程. 一.抓取目的 抓取歌单中的歌曲列表,并提取对应歌曲的外链.歌曲名单以及作者名 测试歌曲外 ...

最新文章

  1. 【转】WCF、WebAPI、WCFREST、WebService之间的区别
  2. ios 监听数组个数的变化_【iOS】KVO方式监听数组的变化动态刷新tableView
  3. 转:Java中的异常处理
  4. gpu云服务器运行游戏_追求高性能游戏,高帧高画质运行,你的手机需要多强的GPU才够?...
  5. 蔬菜大棚原理_温室大棚的原理是什么?
  6. 天正如何转为t3_天正插件 t3 天正文件转T3格式CAD图
  7. 计算机辅助遥感制图的基本过程,南京信息工程大学2018年遥感原理与应用考研初试大纲...
  8. 牛客网算法之洗牌详解
  9. MySQL 事务隔离级别
  10. Bzoj3236:[Ahoi2013]作业:莫队算法+树状数组
  11. 区块链的20种应用场景
  12. Gnuplot 常用命令
  13. 社会学百科——英国DK出版社
  14. NetBIOS 漏洞的入侵与防御
  15. Linux系统调用列表
  16. 郁闷的出纳员 (splay) 题解
  17. peel在Linux生成excel,如何将多个Excel文件合并成一个且保留原有数据?
  18. 怎么用python画直线_python怎么画直线
  19. BISDN:宽带综合业务数字网--网络大典
  20. SQL语句之DQL--基础查询

热门文章

  1. 微信公众号图文如何插入Excel表格
  2. 史上最全Git命令学习:从基础出发,Java中高级面试题总结(全面)
  3. 黑丝,白丝,全都要。某站的视频爬取加合成
  4. IDEA 中 使用 git 进行上传和下载项目
  5. 计算机三级网络技术交换机答题技巧,计算机三级考试考什么内容
  6. 扒了扒华为、新华三、联想、浪潮、曙光5家的财报,吓一大跳
  7. matlab绘制平面等值线图
  8. 如何解决App inventor和AI伴侣无法连接的问题
  9. 网站js劫持了怎么处理和预防、js劫持了怎么办
  10. getBytes()方法详解