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. ASP.NET状态管理之三(隐藏域HiddenField)
  2. 软件和硬件的关系以及软件调动硬件的工作原理
  3. linux下des加密命令,linux下的DES加密
  4. 无法打开输入文件mysql_错误LNK1181,pip安装“无法打开输入文件”mysqlclient.lib'...
  5. MFC TabCtrl用法
  6. python+OpenCV图像处理(六)图像平滑与滤波
  7. JEECG ——11月份版本即将发布功能点
  8. TTU智能配电终端_智能配电终端规模化建设及应用
  9. http://blog.csdn.net/baidu_31657889/article/details/52315902
  10. 设置ecshop2.7首页幻灯片宽度为100%
  11. java 允许魔术变量_PHP超级全局变量、魔术变量和魔术函数汇总整理
  12. instantclient19\12\11版本下载
  13. 三菱plc控制步进电机实例_自动化工程师必掌握的PLC控制步进电机逻辑思路
  14. 搜索实现vue+Element-ui仿商城搜索
  15. 东芝Toshiba DP-3003 一体机驱动
  16. 校验和checksum、哈希值是什么?
  17. 数据库表插入中文数据时报错Incorrect string value: ‘\xE4\xBB\x8E\xE5\x85\xA5...‘ for column ‘name‘ at r
  18. mysql 1代表true(MySQL数据类型详解)
  19. 神经网络中-baseline,benchmark,backbone都是什么意思?
  20. 静态变量(类变量)和非静态变量(成员变量、实例变量)的区别

热门文章

  1. HTML设计一个图书管理网页
  2. 2016 GitHub章鱼猫观察报告之开源统计
  3. win10 设置定时关机
  4. Go语言 - 并发控制
  5. 右键菜单“发送到”的修改
  6. 来看看怎么通过a标签打开一个对话框
  7. Oracle读取数据库中表填充,Oracle数据库中查看所有表和字段以及表注释.字段注释...
  8. 刷步数作弊方式解析,保护你微信运动里的那点隐私
  9. 关于互联网的那些小创意
  10. 推出全新的交互式导航和社交导航 iGibson 挑战