可视化效果对比
柱状图
可视化展示
代码展示
option = {
xAxis: {
type: 'category',
data: ['北京', '上海', '广东', '青海', '云南', '辽宁', '内蒙古']
},
yAxis: {
type: 'value'
},
series: [{
data: [929, 732, 1650, 18, 188, 164, 249],
type: 'bar',
showBackground: true,
backgroundStyle: {
color: 'rgba(220, 220, 220, 0.8)'
}
}]
};
# 柱状图
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(['北京', '上海', '广东', '青海', '云南', '辽宁', '内蒙古'])
bar.add_yaxis("疫情数据可视化", [929, 732, 1650, 18, 188, 164, 249])
# render会生成本地html文件,默认会在当前目录生成 render.html 文件
# 也可以传入路径参数 Exam : bar.render(mycharts.html")
bar.render('YiQingPyecharts.html') # 生成本地 HTML 文件
# 柱状图
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
news = pd.read_csv("ripe_chinese_news.csv")
# 类别数量分布
c = news["tag"].value_counts()
print(c)
c.plot(kind='bar')
plt.title("新闻联播内容分布")
plt.show()
import plotly.graph_objects as go
fig = go.Figure(
data=[go.Bar(x=['详细全文', '国内', '国外'], y=[11529, 6186, 3018])],
layout=go.Layout(
title=go.layout.Title(text="新闻联播内容分布")
)
)
fig.show()
饼状图
可视化展示
代码展示
option = {
title: {
text: '网站点用户访问来源',
left: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c} ({d}%)'
},
legend: {
orient: 'vertical',
left: 'left',
data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎']
},
series: [
{
name: '访问来源',
type: 'pie',
radius: '55%',
center: ['50%', '60%'],
data: [
{value: 335, name: '直接访问'},
{value: 310, name: '邮件营销'},
{value: 234, name: '联盟广告'},
{value: 135, name: '视频广告'},
{value: 1548, name: '搜索引擎'}
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
# 饼状图
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.faker import Faker
x_data = ["直接访问", "邮件营销", "联盟广告", "视频广告", "搜索引擎"]
y_data = [335, 310, 274, 235, 400]
data_pair = [list(z) for z in zip(x_data, y_data)]
data_pair.sort(key=lambda x: x[1])
c = (
Pie()
.add(
series_name="访问来源",
data_pair=data_pair,
)
.set_global_opts(title_opts=opts.TitleOpts(title="网站用户访问来源"))
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
.render("pie_base.html")
)
折线图
可视化展示
代码展示
option = {
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
}, title: {
text: '微信运动',
left: 'center'
},
series: [{
data: [820, 932, 901, 934, 1290, 1330, 1320],
type: 'line'
}]
};
# 折线图
import pyecharts.options as opts
from pyecharts.charts import Line
"""
Gallery 使用 pyecharts 1.1.0
参考地址: https://echarts.baidu.com/examples/editor.html?c=line-simple
目前无法实现的功能:
暂无
"""
x_data = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
y_data = [820, 932, 901, 934, 1290, 1330, 1320]
(
Line()
.set_global_opts(
title_opts=opts.TitleOpts(title="微信运动"),
tooltip_opts=opts.TooltipOpts(is_show=False),
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),
),
)
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="",
y_axis=y_data,
symbol="emptyCircle",
is_symbol_show=True,
label_opts=opts.LabelOpts(is_show=False),
)
.render("basic_line_chart.html")
)
地图可视化
可视化展示
代码展示
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>QQ音乐播放量地图可视化</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<script src="js/esl.js" type="text/javascript"></script>
</head>
<body>
<div id="main" style="width:1000px;height:800px;margin:0 auto;"> </div>
<script type="text/javascript">
var fileLocation ='js/echarts-map';
require.config({
paths:{
'echarts': fileLocation
}
});
// 作为入口
require(
[
'echarts',
'echarts/chart/map'
],
function (ec) {
var myChart = ec.init(document.getElementById('main'));
var option = {
title : {
text: 'QQ音乐播放量',
subtext: '中国',
x:'center'
},
tooltip : {
trigger: 'item'
},
legend: {
orient: 'vertical',
x:'left',
data:['抒情类','动感类','古典类']
},
dataRange: {
min: 0,
max: 2500,
x: 'left',
y: 'bottom',
text:['高','低'], // 文本,默认为数值文本
calculable : true
},
toolbox: {
show : true,
orient : 'vertical',
x: 'right',
y: 'center',
feature : {
mark : {show: true},
dataView : {show: true, readOnly: false},
restore : {show: true},
saveAsImage : {show: true}
}
},
series : [
{
name: '抒情类',
type: 'map',
mapType: 'china',
roam: true,
itemStyle:{
normal:{label:{show:true}},
emphasis:{label:{show:true}}
},
data:[
{name: '北京',value: Math.round(Math.random()*1000)},
{name: '天津',value: Math.round(Math.random()*1000)},
{name: '上海',value: Math.round(Math.random()*1000)},
{name: '重庆',value: Math.round(Math.random()*1000)},
{name: '河北',value: Math.round(Math.random()*1000)},
{name: '河南',value: Math.round(Math.random()*1000)},
{name: '云南',value: Math.round(Math.random()*1000)},
{name: '辽宁',value: Math.round(Math.random()*1000)},
{name: '黑龙江',value: Math.round(Math.random()*1000)},
{name: '湖南',value: Math.round(Math.random()*1000)},
{name: '安徽',value: Math.round(Math.random()*1000)},
{name: '山东',value: Math.round(Math.random()*1000)},
{name: '新疆',value: Math.round(Math.random()*1000)},
{name: '江苏',value: Math.round(Math.random()*1000)},
{name: '浙江',value: Math.round(Math.random()*1000)},
{name: '江西',value: Math.round(Math.random()*1000)},
{name: '湖北',value: Math.round(Math.random()*1000)},
{name: '广西',value: Math.round(Math.random()*1000)},
{name: '甘肃',value: Math.round(Math.random()*1000)},
{name: '山西',value: Math.round(Math.random()*1000)},
{name: '内蒙古',value: Math.round(Math.random()*1000)},
{name: '陕西',value: Math.round(Math.random()*1000)},
{name: '吉林',value: Math.round(Math.random()*1000)},
{name: '福建',value: Math.round(Math.random()*1000)},
{name: '贵州',value: Math.round(Math.random()*1000)},
{name: '广东',value: Math.round(Math.random()*1000)},
{name: '青海',value: Math.round(Math.random()*1000)},
{name: '西藏',value: Math.round(Math.random()*1000)},
{name: '四川',value: Math.round(Math.random()*1000)},
{name: '宁夏',value: Math.round(Math.random()*1000)},
{name: '海南',value: Math.round(Math.random()*1000)},
{name: '台湾',value: Math.round(Math.random()*1000)},
{name: '香港',value: Math.round(Math.random()*1000)},
{name: '澳门',value: Math.round(Math.random()*1000)}
]
},
{
name: '动感类',
type: 'map',
mapType: 'china',
itemStyle:{
normal:{label:{show:true}},
emphasis:{label:{show:true}}
},
data:[
{name: '北京',value: Math.round(Math.random()*1000)},
{name: '天津',value: Math.round(Math.random()*1000)},
{name: '上海',value: Math.round(Math.random()*1000)},
{name: '重庆',value: Math.round(Math.random()*1000)},
{name: '河北',value: Math.round(Math.random()*1000)},
{name: '安徽',value: Math.round(Math.random()*1000)},
{name: '新疆',value: Math.round(Math.random()*1000)},
{name: '浙江',value: Math.round(Math.random()*1000)},
{name: '江西',value: Math.round(Math.random()*1000)},
{name: '山西',value: Math.round(Math.random()*1000)},
{name: '内蒙古',value: Math.round(Math.random()*1000)},
{name: '吉林',value: Math.round(Math.random()*1000)},
{name: '福建',value: Math.round(Math.random()*1000)},
{name: '广东',value: Math.round(Math.random()*1000)},
{name: '西藏',value: Math.round(Math.random()*1000)},
{name: '四川',value: Math.round(Math.random()*1000)},
{name: '宁夏',value: Math.round(Math.random()*1000)},
{name: '香港',value: Math.round(Math.random()*1000)},
{name: '澳门',value: Math.round(Math.random()*1000)}
]
},
{
name: '古典类',
type: 'map',
mapType: 'china',
itemStyle:{
normal:{label:{show:true}},
emphasis:{label:{show:true}}
},
data:[
{name: '北京',value: Math.round(Math.random()*1000)},
{name: '天津',value: Math.round(Math.random()*1000)},
{name: '上海',value: Math.round(Math.random()*1000)},
{name: '广东',value: Math.round(Math.random()*1000)},
{name: '台湾',value: Math.round(Math.random()*1000)},
{name: '香港',value: Math.round(Math.random()*1000)},
{name: '澳门',value: Math.round(Math.random()*1000)}
]
}
]
};
var ecConfig= require('echarts/config');
myChart.on(ecConfig.EVENT.MAP_SELECTED,function (param) {
varselected=param.selected;
varmapSeries=option.series[0];
vardata= [];
varlegendData= [];
varname;
for (varp=0,len=mapSeries.data.length; p<len; p++) {
name=mapSeries.data[p].name;
mapSeries.data[p].selected=selected[name];
if (selected[name]) {
alert(name); //这里只是简单的做一个事例说明,弹出用户所选的省,如需做其他的扩展,可以在这里边添加相应的操作
}
}
});
myChart.setOption(option);
}
);
</script>
</body>
</html>
# -*- encoding: utf-8 -*-
"""
@File : COVID19.py
@Contact : ag@team-ag.club
@License : (C)Copyright 2019-2020, CodingPark
@Modify Time @Author @Version @Desciption
------------ ------- -------- -----------
2020-07-17 15:22 AG 1.0 None
"""
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Map
df = pd.read_excel('Covid_China.xls')
# 1 根据Excel绘制国内总疫情图(确诊)
data = df.groupby(by='province', as_index=False).sum()
data_list = list(zip(data['province'].values.tolist(), data['total_confirm'].values.tolist()))
def map_china():
c = (
Map()
.add(series_name='确诊病例', data_pair=data_list, maptype="china")
.set_global_opts(
title_opts=opts.TitleOpts(title='疫情地图'),
visualmap_opts=opts.VisualMapOpts(is_piecewise=True,
pieces=[{"max": 9, "min": 0, "lavel": "0-9", "color": "#FFE4E1"},
{"max": 99, "min": 10, "lavel": "10-99", "color": "#FF7F50"},
{"max": 499, "min": 100, "lavel": "100-499", "color": "#F08080"},
{"max": 999, "min": 500, "lavel": "500-999", "color": "#CD5C5C"},
{"max": 9999, "min": 1000, "lavel": "1000-9999",
"color": "#990000"},
{"max": 99999, "min": 10000, "lavel": ">10000",
"color": "#660000"}]
)
)
)
return c
d_map = map_china()
d_map.render('COVID-19.html')
print('\n=== 成功 ===')
更多可视化样例
折线图
柱状图
饼状图
散点图
关系图
平行坐标系
更多参考
📍echarts参考
https://echarts.apache.org/zh/index.html
📍Pyecharts参考
https://pyecharts.org/#/zh-cn/