使用pyecharts绘制基本图形(二)

1,300 阅读20分钟

实验环境:

  • windows 10
  • Vscode
  • Python (3.7.4)
  • Pyecharts (1.7.1)

准备工作:


部分数据源所在的文件类型为 "json",这里介绍怎样导入并读取 json 文件中的数据

# 导入库
import json

# data.json 为虚拟数据
# 打开json文件,设置编码格式
with open("data.json", "r", encoding="utf-8") as d:
    # 读取数据
    j = json.load(d)

案例:使用 data.json文件绘制树图、矩形树图

数据文件:data.json

// data.json
{
  "name": "flare",
  "children": [
    {
      "name": "flex",
      "children": [{ "name": "FlareVis", "value": 4116 }]
    },
    {
      "name": "scale",
      "children": [
        { "name": "IScaleMap", "value": 2105 },
        { "name": "LinearScale", "value": 1316 },
        { "name": "LogScale", "value": 3151 },
        { "name": "OrdinalScale", "value": 3770 },
        { "name": "QuantileScale", "value": 2435 },
        { "name": "QuantitativeScale", "value": 4839 },
        { "name": "RootScale", "value": 1756 },
        { "name": "Scale", "value": 4268 },
        { "name": "ScaleType", "value": 1821 },
        { "name": "TimeScale", "value": 5833 }
      ]
    },
    {
      "name": "display",
      "children": [{ "name": "DirtySprite", "value": 8833 }]
    }
  ]
}

树图:


思路:

  • 导入相关库
  • 读取数据
  • 可视化
  • 美化图形

步骤:

导入相关库,读取数据

# 导入库
from pyecharts import options as opts
from pyecharts.charts import Tree

# 导入JSON库包
import json

# 打开json文件,设置编码格式为:utf-8
with open("data.json", "r", encoding="utf-8") as d:
    # 读取数据
    j = json.load(d)

可视化

(
    Tree()
    .add(
        "",
        [j],
        collapse_interval=2,
        orient="TB",                    # 上下方向,T-top,B-bottom
        # 标签
        label_opts=opts.LabelOpts(
            position="top",             # 标签位置在圆的上面
            horizontal_align="right",   # 标签水平向右对齐
            vertical_align="middle",    # 标签垂直居中
            rotate=-90,                 # 标签顺时针翻转90度
        ),
    )
    # 输出html文件
    .render("tree_top_bottom.html")
)

整理代码,美化图形

# 导入库
from pyecharts import options as opts
from pyecharts.charts import Tree

# 导入JSON库包
import json
# 打开json文件,设置编码格式为:utf-8
with open("data.json", "r", encoding="utf-8") as d:
    # 读取数据
    j = json.load(d)
(
    Tree()
    .add(
        "",
        [j],
        collapse_interval=2,
        orient="TB",                    # 上下方向,T-top,B-bottom
        # 标签
        label_opts=opts.LabelOpts(
            position="top",             # 标签位置在圆的上面
            horizontal_align="right",   # 标签水平向右对齐
            vertical_align="middle",    # 标签垂直居中
            rotate=-90,                 # 标签顺时针翻转90度
        ),
    )
    # 标题
    .set_global_opts(title_opts=opts.TitleOpts(title="树图", subtitle="李后文"))
    # 输出html文件
    .render("tree_top_bottom.html")
)

效果:



矩形树图:

思路:

  • 导入相关库
  • 读取数据
  • 可视化
  • 美化图形

步骤:

导入相关库,读取数据

# 导入库
from pyecharts import options as opts
from pyecharts.charts import TreeMap

# 导入JSON库包
import json

# 打开json文件,设置编码格式为:utf-8
with open("data.json", encoding="utf-8") as d:
    # 读取数据
    j = json.load(d)

可视化

(
    TreeMap()
    .add(
        "",
        [j],
        visible_min=300,        # 当前层级的最小value值为:300
        leaf_depth=3,           # 展示3个图层
        label_opts=opts.LabelOpts(position="inside"),   # 标签在中间位置
    )
    # 输出html文件
    .render("TreeMap.html")
)

整理代码,美化图形

# 导入库
from pyecharts import options as opts
from pyecharts.charts import TreeMap

# 导入JSON库包
import json

# 打开json文件,设置编码格式为:utf-8
with open("data.json", encoding="utf-8") as d:
    # 读取数据
    j = json.load(d)
(
    TreeMap()
    .add(
        "",
        [j],
        visible_min=300,        # 当前层级的最小value值为:300
        leaf_depth=3,           # 展示3个图层
        label_opts=opts.LabelOpts(position="inside"),   # 标签在中间位置
    )
    # 标题
    .set_global_opts(title_opts=opts.TitleOpts(title="矩形树图", subtitle="李后文"))
    # 输出html文件
    .render("TreeMap.html")
)

效果:



案例:绘制鸢尾花数据的相关性矩阵

数据文件:iris.csv

散点矩阵图:

这个图只能实现散点图矩阵的效果,并不能代表这就是散点矩阵图。以后若有机会实现,会重新更新代码。

更方便的绘图方法是使用:matplotlib + seaborn 库包

思路:

  • 导入相关库
  • 读取数据
  • 可视化
  • 美化图形

步骤:

导入相关库,读取数据

# 导入库
import pyecharts.options as opts
from pyecharts.charts import Scatter, Grid
import pandas as pd

# 导入数据
iris = pd.read_csv("iris.csv", encoding='utf-8')

# x轴
x = [x for x in range(1, 51)]
# y轴数据
y1 = iris.iloc[:50, 1].tolist()
y2 = iris.iloc[50:100, 1].tolist()
y3 = iris.iloc[100:150, 1].tolist()

y4 = iris.iloc[:50, 2].tolist()
y5 = iris.iloc[50:100, 2].tolist()
y6 = iris.iloc[100:150, 2].tolist()

y7 = iris.iloc[:50, 3].tolist()
y8 = iris.iloc[50:100, 3].tolist()
y9 = iris.iloc[100:150, 3].tolist()

y10 = iris.iloc[:50, 4].tolist()
y11 = iris.iloc[50:100, 4].tolist()
y12 = iris.iloc[100:150, 4].tolist()

可视化

# 图形一
scatter1 = (
    Scatter()
    .add_xaxis(xaxis_data=x)
    .add_yaxis(
        "setosa",		# 系列名
        y_axis=y1,		# y轴数据
        label_opts=opts.LabelOpts(is_show=False),		# 不在图形上显示数值
    )
    .add_yaxis(
        "versicolor",
        y_axis=y2,
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add_yaxis(
        "virginica",
        y_axis=y3,
        label_opts=opts.LabelOpts(is_show=False),
    )
    .set_global_opts(
        # 标题
        title_opts=opts.TitleOpts(title="Scatter_Sepal.Length"),
        xaxis_opts=opts.AxisOpts(
            type_="value",		# x轴类型
            splitline_opts=opts.SplitLineOpts(is_show=True)),	#开启分割线
        yaxis_opts=opts.AxisOpts(
            type_="value",		# y轴类型
            is_scale=True,		# y轴初始值不按照从0开始
            splitline_opts=opts.SplitLineOpts(is_show=True)),
    )

)

scatter2 = (
    Scatter()
    .add_xaxis(xaxis_data=x)
    .add_yaxis(
        "setosa",
        y_axis=y4,
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add_yaxis(
        "versicolor",
        y_axis=y5,
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add_yaxis(
        "virginica",
        y_axis=y6,
        label_opts=opts.LabelOpts(is_show=False),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="Scatter_Sepal.Width", pos_right="right"),	# 标题位置位于右侧
        xaxis_opts=opts.AxisOpts(
            type_="value",
            splitline_opts=opts.SplitLineOpts(is_show=True)),
        yaxis_opts=opts.AxisOpts(
            type_="value",
            is_scale=True,
            splitline_opts=opts.SplitLineOpts(is_show=True)),
    )
)

scatter3 = (
    Scatter()
    .add_xaxis(xaxis_data=x)
    .add_yaxis(
        "setosa",
        y_axis=y7,
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add_yaxis(
        "versicolor",
        y_axis=y8,
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add_yaxis(
        "virginica",
        y_axis=y9,
        label_opts=opts.LabelOpts(is_show=False),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="Scatter_Petal.Length", pos_bottom="bottom"),		# 标题位置位于底部
        xaxis_opts=opts.AxisOpts(
            type_="value",
            splitline_opts=opts.SplitLineOpts(is_show=True)),
        yaxis_opts=opts.AxisOpts(
            type_="value",
            is_scale=True,
            splitline_opts=opts.SplitLineOpts(is_show=True)),
    )
)

scatter4 = (
    Scatter()
    .add_xaxis(xaxis_data=x)
    .add_yaxis(
        "setosa",
        y_axis=y10,
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add_yaxis(
        "versicolor",
        y_axis=y11,
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add_yaxis(
        "virginica",
        y_axis=y12,
        label_opts=opts.LabelOpts(is_show=False),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="Scatter_Petal.Width", pos_bottom="bottom", pos_right="right"),	# 标题位置位于右下角
        xaxis_opts=opts.AxisOpts(
            type_="value",
            splitline_opts=opts.SplitLineOpts(is_show=True)),
        yaxis_opts=opts.AxisOpts(
            type_="value",
            is_scale=True,
            splitline_opts=opts.SplitLineOpts(is_show=True)),
    )
)

(
    Grid()
    # 每个图形所在的位置
    .add(scatter1, grid_opts=opts.GridOpts(pos_bottom="55%", pos_right="55%"))	# 左上
    .add(scatter2, grid_opts=opts.GridOpts(pos_bottom="55%", pos_left="55%"))	# 右上
    .add(scatter3, grid_opts=opts.GridOpts(pos_top="55%", pos_right="55%"))		# 左下
    .add(scatter4, grid_opts=opts.GridOpts(pos_top="55%", pos_left="55%"))		# 右下
    .render("Scatter.html")
)

效果:



案例:在地图上用圆点标出各省的销售额数据

数据:

province = ['广东', '湖北', '湖南', '四川', '重庆', '黑龙江', '浙江', '山西', '河北', '安徽', '河南', '山东', '西藏']

data = [(i, random.randint(50, 150)) for i in province]

地图:

思路:

  • 导入相关库
  • 读取数据
  • 可视化
  • 美化图形

步骤:

导入相关库,读取数据

# 导入库
from pyecharts import options as opts
from pyecharts.charts import Map
import random

# 数据
province = ['广东', '湖北', '湖南', '四川', '重庆', '黑龙江',
            '浙江', '山西', '河北', '安徽', '河南', '山东', '西藏']
data = [(i, random.randint(50, 150)) for i in province]

可视化

(
    Map()
    .add(
        "销售额",           
        data_pair=data,     # 数据
        maptype="china",    # 地图为中国地图
    )
    .render("map_sales.html")
)

整理代码,美化图形

# 导入库
from pyecharts import options as opts
from pyecharts.charts import Map
import random

# 数据
province = ['广东', '湖北', '湖南', '四川', '重庆', '黑龙江',
            '浙江', '山西', '河北', '安徽', '河南', '山东', '西藏']
data = [(i, random.randint(50, 150)) for i in province]

(
    Map()
    .add(
        "销售额",           
        data_pair=data,     # 数据
        maptype="china",    # 地图为中国地图
    )
    # 标题
    .set_global_opts(
        title_opts=opts.TitleOpts(title="销售额数据", subtitle="李后文")
    )
    .render("map_sales.html")
)

效果:



案例:绘制地理热点图展示某连锁企业在湖北省各城市的门店数

数据:

province = ['武汉', '十堰', '鄂州', '宜昌', '荆州', '孝感', '黄石', '咸宁', '仙桃']

data = [(i, random.randint(50, 150)) for i in province]

地理热点图:

思路:

  • 导入相关库
  • 读取数据
  • 可视化
  • 美化图形

步骤:

导入相关库,读取数据

# 导入库
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import GeoType
import random

# 数据
province = ['武汉', '十堰', '鄂州', '宜昌', '荆州', '孝感', '黄石', '咸宁', '仙桃']
data = [(i, random.randint(50, 150)) for i in province]

可视化

(
    Geo()
    .add_schema(maptype="湖北")	# 地图为湖北地图
    .add(
        "门店数",
        data,
        type_=GeoType.HEATMAP,	 # Geo图类型为热点图
    )
    .render("HeatMap.html")
)

整理代码,美化图形

# 导入库
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import GeoType
import random

# 数据
province = ['武汉', '十堰', '鄂州', '宜昌', '荆州', '孝感', '黄石', '咸宁', '仙桃']
data = [(i, random.randint(50, 150)) for i in province]

(
    Geo()
    .add_schema(maptype="湖北")	# 地图为湖北地图
    .add(
        "门店数",
        data,
        type_=GeoType.HEATMAP,	 # Geo图类型为热点图
    )
    # 标题
    .set_global_opts(
         title_opts=opts.TitleOpts(title="某连锁企业在湖北省各城市的门店数", subtitle="李后文"),
        visualmap_opts=opts.VisualMapOpts(min_=50, max_=150),	# 视觉映射区间
    )
    .render("HeatMap.html")
)

效果:



案例:绘制词云图

数据文件:word_data.csv

词云图:

思路:

  • 导入相关库
  • 读取数据
  • 可视化
  • 美化图形

步骤:

导入相关库,读取数据

# 导入库
from pyecharts import options as opts
from pyecharts.charts import WordCloud
import pandas as pd

# 导入并获取数据
word_data = pd.read_csv("word_data.csv", encoding='utf-8')
data = word_data.iloc[:, [3, 1]].values.tolist()

可视化

(
    WordCloud()
    .add("",
         data_pair=data,            # 系列数据
         shape="circle",            # 词云图轮廓
         word_size_range=[10, 80],  # 词的大小范围
         )
    .render("wordcloud.html")
)

整理代码,美化图形

# 导入库
from pyecharts import options as opts
from pyecharts.charts import WordCloud
import pandas as pd

# 导入并获取数据
word_data = pd.read_csv("word_data.csv", encoding='utf-8')
data = word_data.iloc[:, [3, 1]].values.tolist()

(
    WordCloud()
    .add("",
         data_pair=data,            # 系列数据
         shape="circle",            # 词云图轮廓
         word_size_range=[10, 80],  # 词的大小范围
         )
    # 标题
    .set_global_opts(
        title_opts=opts.TitleOpts(title="词云图", subtitle="李后文")
    )
    .render("wordcloud.html")
)

效果:



案例 :绘制主题河流图

数据:

# 数据
datax = ['分支1', '分支2', '分支3', '分支4', '分支5', '分支6']

datay = [
    ['2015/11/08', 10, '分支1'], ['2015/11/09', 15, '分支1'], ['2015/11/10', 35, '分支1'],
    ['2015/11/14', 7, '分支1'], ['2015/11/15', 2, '分支1'], ['2015/11/16', 17, '分支1'],
    ['2015/11/17', 33, '分支1'], ['2015/11/18', 40, '分支1'], ['2015/11/19', 32, '分支1'],
    ['2015/11/20', 26, '分支1'], ['2015/11/21', 35, '分支1'], ['2015/11/22', 40, '分支1'],
    ['2015/11/23', 32, '分支1'], ['2015/11/24', 26, '分支1'], ['2015/11/25', 22, '分支1'],
    ['2015/11/08', 35, '分支2'], ['2015/11/09', 36, '分支2'], ['2015/11/10', 37, '分支2'],
    ['2015/11/11', 22, '分支2'], ['2015/11/12', 24, '分支2'], ['2015/11/13', 26, '分支2'],
    ['2015/11/14', 34, '分支2'], ['2015/11/15', 21, '分支2'], ['2015/11/16', 18, '分支2'],
    ['2015/11/17', 45, '分支2'], ['2015/11/18', 32, '分支2'], ['2015/11/19', 35, '分支2'],
    ['2015/11/20', 30, '分支2'], ['2015/11/21', 28, '分支2'], ['2015/11/22', 27, '分支2'],
    ['2015/11/23', 26, '分支2'], ['2015/11/24', 15, '分支2'], ['2015/11/25', 30, '分支2'],
    ['2015/11/26', 35, '分支2'], ['2015/11/27', 42, '分支2'], ['2015/11/28', 42, '分支2'],
    ['2015/11/08', 21, '分支3'], ['2015/11/09', 25, '分支3'], ['2015/11/10', 27, '分支3'],
    ['2015/11/11', 23, '分支3'], ['2015/11/12', 24, '分支3'], ['2015/11/13', 21, '分支3'],
    ['2015/11/14', 35, '分支3'], ['2015/11/15', 39, '分支3'], ['2015/11/16', 40, '分支3'],
    ['2015/11/17', 36, '分支3'], ['2015/11/18', 33, '分支3'], ['2015/11/19', 43, '分支3'],
    ['2015/11/20', 40, '分支3'], ['2015/11/21', 34, '分支3'], ['2015/11/22', 28, '分支3'],
    ['2015/11/14', 7, '分支4'], ['2015/11/15', 2, '分支4'], ['2015/11/16', 17, '分支4'],
    ['2015/11/17', 33, '分支4'], ['2015/11/18', 40, '分支4'], ['2015/11/19', 32, '分支4'],
    ['2015/11/20', 26, '分支4'], ['2015/11/21', 35, '分支4'], ['2015/11/22', 40, '分支4'],
    ['2015/11/23', 32, '分支4'], ['2015/11/24', 26, '分支4'], ['2015/11/25', 22, '分支4'],
    ['2015/11/26', 16, '分支4'], ['2015/11/27', 22, '分支4'], ['2015/11/28', 10, '分支4'],
    ['2015/11/08', 10, '分支5'], ['2015/11/09', 15, '分支5'], ['2015/11/10', 35, '分支5'],
    ['2015/11/11', 38, '分支5'], ['2015/11/12', 22, '分支5'], ['2015/11/13', 16, '分支5'],
    ['2015/11/14', 7, '分支5'], ['2015/11/15', 2, '分支5'], ['2015/11/16', 17, '分支5'],
    ['2015/11/17', 33, '分支5'], ['2015/11/18', 40, '分支5'], ['2015/11/19', 32, '分支5'],
    ['2015/11/20', 26, '分支5'], ['2015/11/21', 35, '分支5'], ['2015/11/22', 4, '分支5'],
    ['2015/11/23', 32, '分支5'], ['2015/11/24', 26, '分支5'], ['2015/11/25', 22, '分支5'],
    ['2015/11/26', 16, '分支5'], ['2015/11/27', 22, '分支5'], ['2015/11/28', 10, '分支5'],
    ['2015/11/08', 10, '分支6'], ['2015/11/09', 15, '分支6'], ['2015/11/10', 35, '分支6'],
    ['2015/11/11', 38, '分支6'], ['2015/11/12', 22, '分支6'], ['2015/11/13', 16, '分支6'],
    ['2015/11/14', 7, '分支6'], ['2015/11/15', 2, '分支6'], ['2015/11/16', 17, '分支6'],
    ['2015/11/17', 33, '分支6'], ['2015/11/18', 4, '分支6'], ['2015/11/19', 32, '分支6'],
    ['2015/11/20', 26, '分支6'], ['2015/11/21', 35, '分支6'], ['2015/11/22', 40, '分支6'],
    ['2015/11/23', 32, '分支6'], ['2015/11/24', 26, '分支6'], ['2015/11/25', 22, '分支6']
]

主题河流图:

思路:

  • 导入相关库
  • 读取数据
  • 可视化
  • 美化图形

步骤:

导入相关库,读取数据

# 导入库
import pyecharts.options as opts
from pyecharts.charts import ThemeRiver

# 数据
datax = ['分支1', '分支2', '分支3', '分支4', '分支5', '分支6']

datay = [
    ['2015/11/08', 10, '分支1'], ['2015/11/09',
                                15, '分支1'], ['2015/11/10', 35, '分支1'],
    ['2015/11/14', 7, '分支1'], ['2015/11/15', 2, '分支1'], ['2015/11/16', 17, '分支1'],
    ['2015/11/17', 33, '分支1'], ['2015/11/18',
                                40, '分支1'], ['2015/11/19', 32, '分支1'],
    ['2015/11/20', 26, '分支1'], ['2015/11/21',
                                35, '分支1'], ['2015/11/22', 40, '分支1'],
    ['2015/11/23', 32, '分支1'], ['2015/11/24',
                                26, '分支1'], ['2015/11/25', 22, '分支1'],
    ['2015/11/08', 35, '分支2'], ['2015/11/09',
                                36, '分支2'], ['2015/11/10', 37, '分支2'],
    ['2015/11/11', 22, '分支2'], ['2015/11/12',
                                24, '分支2'], ['2015/11/13', 26, '分支2'],
    ['2015/11/14', 34, '分支2'], ['2015/11/15',
                                21, '分支2'], ['2015/11/16', 18, '分支2'],
    ['2015/11/17', 45, '分支2'], ['2015/11/18',
                                32, '分支2'], ['2015/11/19', 35, '分支2'],
    ['2015/11/20', 30, '分支2'], ['2015/11/21',
                                28, '分支2'], ['2015/11/22', 27, '分支2'],
    ['2015/11/23', 26, '分支2'], ['2015/11/24',
                                15, '分支2'], ['2015/11/25', 30, '分支2'],
    ['2015/11/26', 35, '分支2'], ['2015/11/27',
                                42, '分支2'], ['2015/11/28', 42, '分支2'],
    ['2015/11/08', 21, '分支3'], ['2015/11/09',
                                25, '分支3'], ['2015/11/10', 27, '分支3'],
    ['2015/11/11', 23, '分支3'], ['2015/11/12',
                                24, '分支3'], ['2015/11/13', 21, '分支3'],
    ['2015/11/14', 35, '分支3'], ['2015/11/15',
                                39, '分支3'], ['2015/11/16', 40, '分支3'],
    ['2015/11/17', 36, '分支3'], ['2015/11/18',
                                33, '分支3'], ['2015/11/19', 43, '分支3'],
    ['2015/11/20', 40, '分支3'], ['2015/11/21',
                                34, '分支3'], ['2015/11/22', 28, '分支3'],
    ['2015/11/14', 7, '分支4'], ['2015/11/15', 2, '分支4'], ['2015/11/16', 17, '分支4'],
    ['2015/11/17', 33, '分支4'], ['2015/11/18',
                                40, '分支4'], ['2015/11/19', 32, '分支4'],
    ['2015/11/20', 26, '分支4'], ['2015/11/21',
                                35, '分支4'], ['2015/11/22', 40, '分支4'],
    ['2015/11/23', 32, '分支4'], ['2015/11/24',
                                26, '分支4'], ['2015/11/25', 22, '分支4'],
    ['2015/11/26', 16, '分支4'], ['2015/11/27',
                                22, '分支4'], ['2015/11/28', 10, '分支4'],
    ['2015/11/08', 10, '分支5'], ['2015/11/09',
                                15, '分支5'], ['2015/11/10', 35, '分支5'],
    ['2015/11/11', 38, '分支5'], ['2015/11/12',
                                22, '分支5'], ['2015/11/13', 16, '分支5'],
    ['2015/11/14', 7, '分支5'], ['2015/11/15', 2, '分支5'], ['2015/11/16', 17, '分支5'],
    ['2015/11/17', 33, '分支5'], ['2015/11/18',
                                40, '分支5'], ['2015/11/19', 32, '分支5'],
    ['2015/11/20', 26, '分支5'], ['2015/11/21', 35, '分支5'], ['2015/11/22', 4, '分支5'],
    ['2015/11/23', 32, '分支5'], ['2015/11/24',
                                26, '分支5'], ['2015/11/25', 22, '分支5'],
    ['2015/11/26', 16, '分支5'], ['2015/11/27',
                                22, '分支5'], ['2015/11/28', 10, '分支5'],
    ['2015/11/08', 10, '分支6'], ['2015/11/09',
                                15, '分支6'], ['2015/11/10', 35, '分支6'],
    ['2015/11/11', 38, '分支6'], ['2015/11/12',
                                22, '分支6'], ['2015/11/13', 16, '分支6'],
    ['2015/11/14', 7, '分支6'], ['2015/11/15', 2, '分支6'], ['2015/11/16', 17, '分支6'],
    ['2015/11/17', 33, '分支6'], ['2015/11/18', 4, '分支6'], ['2015/11/19', 32, '分支6'],
    ['2015/11/20', 26, '分支6'], ['2015/11/21',
                                35, '分支6'], ['2015/11/22', 40, '分支6'],
    ['2015/11/23', 32, '分支6'], ['2015/11/24', 26, '分支6'], ['2015/11/25', 22, '分支6']
]

可视化

(
    ThemeRiver()
    .add(
        series_name=datax,      # 系列名称
        data=datay,           	# 系列数据
        # 轴配置项
        singleaxis_opts=opts.SingleAxisOpts(
            pos_top="50", pos_bottom="50", pos_left="100", type_="time"
        )
    .render("Theme_river.html")
)

整理代码,美化图形

# 导入库
import pyecharts.options as opts
from pyecharts.charts import ThemeRiver

# 数据
datax = ['分支1', '分支2', '分支3', '分支4', '分支5', '分支6']

datay = [
    ['2015/11/08', 10, '分支1'], ['2015/11/09',
                                15, '分支1'], ['2015/11/10', 35, '分支1'],
    ['2015/11/14', 7, '分支1'], ['2015/11/15', 2, '分支1'], ['2015/11/16', 17, '分支1'],
    ['2015/11/17', 33, '分支1'], ['2015/11/18',
                                40, '分支1'], ['2015/11/19', 32, '分支1'],
    ['2015/11/20', 26, '分支1'], ['2015/11/21',
                                35, '分支1'], ['2015/11/22', 40, '分支1'],
    ['2015/11/23', 32, '分支1'], ['2015/11/24',
                                26, '分支1'], ['2015/11/25', 22, '分支1'],
    ['2015/11/08', 35, '分支2'], ['2015/11/09',
                                36, '分支2'], ['2015/11/10', 37, '分支2'],
    ['2015/11/11', 22, '分支2'], ['2015/11/12',
                                24, '分支2'], ['2015/11/13', 26, '分支2'],
    ['2015/11/14', 34, '分支2'], ['2015/11/15',
                                21, '分支2'], ['2015/11/16', 18, '分支2'],
    ['2015/11/17', 45, '分支2'], ['2015/11/18',
                                32, '分支2'], ['2015/11/19', 35, '分支2'],
    ['2015/11/20', 30, '分支2'], ['2015/11/21',
                                28, '分支2'], ['2015/11/22', 27, '分支2'],
    ['2015/11/23', 26, '分支2'], ['2015/11/24',
                                15, '分支2'], ['2015/11/25', 30, '分支2'],
    ['2015/11/26', 35, '分支2'], ['2015/11/27',
                                42, '分支2'], ['2015/11/28', 42, '分支2'],
    ['2015/11/08', 21, '分支3'], ['2015/11/09',
                                25, '分支3'], ['2015/11/10', 27, '分支3'],
    ['2015/11/11', 23, '分支3'], ['2015/11/12',
                                24, '分支3'], ['2015/11/13', 21, '分支3'],
    ['2015/11/14', 35, '分支3'], ['2015/11/15',
                                39, '分支3'], ['2015/11/16', 40, '分支3'],
    ['2015/11/17', 36, '分支3'], ['2015/11/18',
                                33, '分支3'], ['2015/11/19', 43, '分支3'],
    ['2015/11/20', 40, '分支3'], ['2015/11/21',
                                34, '分支3'], ['2015/11/22', 28, '分支3'],
    ['2015/11/14', 7, '分支4'], ['2015/11/15', 2, '分支4'], ['2015/11/16', 17, '分支4'],
    ['2015/11/17', 33, '分支4'], ['2015/11/18',
                                40, '分支4'], ['2015/11/19', 32, '分支4'],
    ['2015/11/20', 26, '分支4'], ['2015/11/21',
                                35, '分支4'], ['2015/11/22', 40, '分支4'],
    ['2015/11/23', 32, '分支4'], ['2015/11/24',
                                26, '分支4'], ['2015/11/25', 22, '分支4'],
    ['2015/11/26', 16, '分支4'], ['2015/11/27',
                                22, '分支4'], ['2015/11/28', 10, '分支4'],
    ['2015/11/08', 10, '分支5'], ['2015/11/09',
                                15, '分支5'], ['2015/11/10', 35, '分支5'],
    ['2015/11/11', 38, '分支5'], ['2015/11/12',
                                22, '分支5'], ['2015/11/13', 16, '分支5'],
    ['2015/11/14', 7, '分支5'], ['2015/11/15', 2, '分支5'], ['2015/11/16', 17, '分支5'],
    ['2015/11/17', 33, '分支5'], ['2015/11/18',
                                40, '分支5'], ['2015/11/19', 32, '分支5'],
    ['2015/11/20', 26, '分支5'], ['2015/11/21', 35, '分支5'], ['2015/11/22', 4, '分支5'],
    ['2015/11/23', 32, '分支5'], ['2015/11/24',
                                26, '分支5'], ['2015/11/25', 22, '分支5'],
    ['2015/11/26', 16, '分支5'], ['2015/11/27',
                                22, '分支5'], ['2015/11/28', 10, '分支5'],
    ['2015/11/08', 10, '分支6'], ['2015/11/09',
                                15, '分支6'], ['2015/11/10', 35, '分支6'],
    ['2015/11/11', 38, '分支6'], ['2015/11/12',
                                22, '分支6'], ['2015/11/13', 16, '分支6'],
    ['2015/11/14', 7, '分支6'], ['2015/11/15', 2, '分支6'], ['2015/11/16', 17, '分支6'],
    ['2015/11/17', 33, '分支6'], ['2015/11/18', 4, '分支6'], ['2015/11/19', 32, '分支6'],
    ['2015/11/20', 26, '分支6'], ['2015/11/21',
                                35, '分支6'], ['2015/11/22', 40, '分支6'],
    ['2015/11/23', 32, '分支6'], ['2015/11/24', 26, '分支6'], ['2015/11/25', 22, '分支6']
]

(
    ThemeRiver()
    .add(
        series_name=datax,      # 系列名称
        data=datay,           	# 系列数据
        # 轴配置项
        singleaxis_opts=opts.SingleAxisOpts(
            pos_top="50", pos_bottom="50", pos_left="100", type_="time"
        )
    )
    .set_global_opts(
        # 标题
        title_opts=opts.TitleOpts(title="主题河流图", subtitle="李后文"),
        # 提示框在坐标轴以直线指示器触发
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="line")
    )
    .render("Theme_river.html")
)

效果: