hichens
from pyecharts.charts import *
from pyecharts.components import Table
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
import random
import datetime
import math
import numpy as np 

from pyecharts.globals import CurrentConfig
CurrentConfig.ONLINE_HOST = "https://cdn.kesci.com/lib/pyecharts_assets/" # 设置host地址

常用图

直方图

x_data = [\'Apple\', \'Huawei\', \'Xiaomi\', \'Oppo\', \'Vivo\', \'Meizu\']
y_data = [123, 153, 89, 107, 98, 23]



\'\'\'直方图\'\'\'
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis(\'\', y_data)
)
bar.render_notebook()

折线图

\'\'\'折线图\'\'\'
line = (
    Line()
    .add_xaxis(x_data)
    .add_yaxis(\'\',y_data)
)
line.render_notebook()

箱线图

x_data = [\'Apple\', \'Huawei\', \'Xiaomi\', \'Oppo\', \'Vivo\', \'Meizu\']
y_data = [[random.randint(100, 200) for i in range(10)] for item in x_data]

\'\'\'箱线图\'\'\'
box = (
    Boxplot()
    .add_xaxis(x_data)
)
box.add_yaxis(\'\', box.prepare_data(y_data))
box.render_notebook()

散点图

\'\'\'散点图\'\'\'
x_data = [\'Apple\', \'Huawei\', \'Xiaomi\', \'Oppo\', \'Vivo\', \'Meizu\']
y_data = [123, 153, 89, 107, 98, 23]

scatter = (Scatter()
           .add_xaxis(x_data)
           .add_yaxis(\'\', y_data)
)

scatter.render_notebook()

涟漪图

\'\'\'涟漪图\'\'\'
effectscatter = (EffectScatter()
                 .add_xaxis(x_data)
                 .add_yaxis(\'\', y_data)
)
effectscatter.render_notebook()

k线图

\'\'\'k线图\'\'\'
date_list = ["2020/4/{}".format(i + 1) for i in range(30)]
y_data = [
    [2320.26, 2320.26, 2287.3, 2362.94],
    [2300, 2291.3, 2288.26, 2308.38],
    [2295.35, 2346.5, 2295.35, 2345.92],
    [2347.22, 2358.98, 2337.35, 2363.8],
    [2360.75, 2382.48, 2347.89, 2383.76],
    [2383.43, 2385.42, 2371.23, 2391.82],
    [2377.41, 2419.02, 2369.57, 2421.15],
    [2425.92, 2428.15, 2417.58, 2440.38],
    [2411, 2433.13, 2403.3, 2437.42],
    [2432.68, 2334.48, 2427.7, 2441.73],
    [2430.69, 2418.53, 2394.22, 2433.89],
    [2416.62, 2432.4, 2414.4, 2443.03],
    [2441.91, 2421.56, 2418.43, 2444.8],
    [2420.26, 2382.91, 2373.53, 2427.07],
    [2383.49, 2397.18, 2370.61, 2397.94],
    [2378.82, 2325.95, 2309.17, 2378.82],
    [2322.94, 2314.16, 2308.76, 2330.88],
    [2320.62, 2325.82, 2315.01, 2338.78],
    [2313.74, 2293.34, 2289.89, 2340.71],
    [2297.77, 2313.22, 2292.03, 2324.63],
    [2322.32, 2365.59, 2308.92, 2366.16],
    [2364.54, 2359.51, 2330.86, 2369.65],
    [2332.08, 2273.4, 2259.25, 2333.54],
    [2274.81, 2326.31, 2270.1, 2328.14],
    [2333.61, 2347.18, 2321.6, 2351.44],
    [2340.44, 2324.29, 2304.27, 2352.02],
    [2326.42, 2318.61, 2314.59, 2333.67],
    [2314.68, 2310.59, 2296.58, 2320.96],
    [2309.16, 2286.6, 2264.83, 2333.29],
    [2282.17, 2263.97, 2253.25, 2286.33],
]

kline = (Kline()
        .add_xaxis(date_list)
        .add_yaxis(\'\', y_data)
        )
kline.render_notebook()

热力图

data = [[i, j, random.randint(0, 100)] for i in range(24) for j in range(7)]
hour_list = [str(i) for i in range(24)]
week_list = [\'周日\', \'周一\', \'周二\', \'周三\', \'周四\', \'周五\', \'周六\']

\'\'\'热力图\'\'\'
heat = (HeatMap()
       .add_xaxis(hour_list)
        .add_yaxis(\'\', week_list, data)
        
       )
heat.render_notebook()

象形图

x_data = [\'Apple\', \'Huawei\', \'Xiaomi\', \'Oppo\', \'Vivo\', \'Meizu\']
y_data = [123, 153, 89, 107, 98, 23]

\'\'\'象形图\'\'\'
pictorialbar = (PictorialBar()
               .add_xaxis(x_data)
                .add_yaxis(\'\', y_data)
               )
pictorialbar.render_notebook()

叠加图

x_data = [\'Apple\', \'Huawei\', \'Xiaomi\', \'Oppo\', \'Vivo\', \'Meizu\']
y_data_bar = [123, 153, 89, 107, 98, 23]
y_data_line = [153, 107, 23, 89, 123, 107]

bar = (Bar()
       .add_xaxis(x_data)
       .add_yaxis(\'\', y_data_bar)
       )

line = (Line()
        .add_xaxis(x_data)
        .add_yaxis(\'\', y_data_line)
        )

\'\'\'叠加图\'\'\'
overlap = bar.overlap(line)
# overlap = line.overlap(bar)
overlap.render_notebook()

地图

GEO-地理坐标

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

\'\'\'GEO-地理坐标\'\'\'
geo = (Geo()
      .add_schema(maptype=\'china\')
       .add(\'\', data)
      )
geo.render_notebook()

map地图

province = [
    \'广东\',
    \'湖北\',
    \'湖南\',
    \'四川\',
    \'重庆\',
    \'黑龙江\',
    \'浙江\',
    \'山西\',
    \'河北\',
    \'安徽\',
    \'河南\',
    \'山东\',
    \'西藏\']
data = [(i, random.randint(50, 150)) for i in province]
\'\'\'map地图\'\'\'
map_ = (
    Map()
    .add("", data, \'china\')
)
map_.render_notebook()

百度地图

province = [
    \'广东\',
    \'湖北\',
    \'湖南\',
    \'四川\',
    \'重庆\',
    \'黑龙江\',
    \'浙江\',
    \'山西\',
    \'河北\',
    \'安徽\',
    \'河南\',
    \'山东\',
    \'西藏\']
data = [(i, random.randint(50, 150)) for i in province]
\'\'\'百度地图\'\'\'
bmap = (
    BMap()
    .add_schema(baidu_ak="FAKE_AK", center=[120.13066322374, 30.240018034923])
    .add("", data)
)
bmap.render_notebook()

其他图

饼图

cate = [\'Apple\', \'Huawei\', \'Xiaomi\', \'Oppo\', \'Vivo\', \'Meizu\']
data = [123, 153, 89, 107, 98, 23]

\'\'\'饼图\'\'\'
pie = (Pie()
      .add(\'\', [list(z) for z in zip(cate, data)])
      )
pie.render_notebook()

漏斗图

cate = [\'访问\', \'注册\', \'加入购物车\', \'提交订单\', \'付款成功\']
data = [30398, 15230, 10045, 3109, 1698]

\'\'\'漏斗图\'\'\'
funnel = (Funnel()
         .add(\'\', [list(z) for z in zip(cate, data)])
         )
funnel.render_notebook()

仪表图

\'\'\'仪表图\'\'\'
gauge = (Gauge()
        .add(\'\', [(\'转化率\', 74)])
        )
gauge.render_notebook()

水球图

\'\'\'水球图\'\'\'
liqiud = (Liquid()
         .add(\'\', [0.52, 0.44, 0.04, 0.02])
         )
liqiud.render_notebook()

日历图

begin = datetime.date(2019, 1, 1)
end = datetime.date(2019, 12, 31)
data = [[str(begin + datetime.timedelta(days=i)), abs(math.cos(i/100))* random.randint(100, 120)]
        for i in range((end - begin).days + 1)]
\'\'\'日历图\'\'\'
calendar = (Calendar()
           .add(\'\', data, calendar_opts=opts.CalendarOpts(range_=\'2019\'))
           )
calendar.render_notebook()

关系图

nodes = [
    {"name": "结点1", "symbolSize": 1},
    {"name": "结点2", "symbolSize": 2},
    {"name": "结点3", "symbolSize": 3},
    {"name": "结点4", "symbolSize": 4},
    {"name": "结点5", "symbolSize": 5},
    {"name": "结点6", "symbolSize": 6},
    {"name": "结点7", "symbolSize": 7},
    {"name": "结点8", "symbolSize": 8},
]
links = [{\'source\': \'结点1\', \'target\': \'结点2\'},
         {\'source\': \'结点1\', \'target\': \'结点3\'},
         {\'source\': \'结点1\', \'target\': \'结点4\'},
         {\'source\': \'结点2\', \'target\': \'结点1\'},
         {\'source\': \'结点3\', \'target\': \'结点4\'},
         {\'source\': \'结点3\', \'target\': \'结点5\'},
         {\'source\': \'结点3\', \'target\': \'结点6\'},
         {\'source\': \'结点4\', \'target\': \'结点1\'},
         {\'source\': \'结点4\', \'target\': \'结点2\'},
         {\'source\': \'结点4\', \'target\': \'结点7\'},
         {\'source\': \'结点4\', \'target\': \'结点8\'},
         {\'source\': \'结点5\', \'target\': \'结点1\'},
         {\'source\': \'结点5\', \'target\': \'结点4\'},
         {\'source\': \'结点5\', \'target\': \'结点6\'},
         {\'source\': \'结点5\', \'target\': \'结点7\'},
         {\'source\': \'结点5\', \'target\': \'结点8\'},
         {\'source\': \'结点6\', \'target\': \'结点1\'},
         {\'source\': \'结点6\', \'target\': \'结点7\'},
         {\'source\': \'结点6\', \'target\': \'结点8\'},
         {\'source\': \'结点7\', \'target\': \'结点1\'},
         {\'source\': \'结点7\', \'target\': \'结点2\'},
         {\'source\': \'结点7\', \'target\': \'结点8\'},
         {\'source\': \'结点8\', \'target\': \'结点1\'},
         {\'source\': \'结点8\', \'target\': \'结点2\'},
         {\'source\': \'结点8\', \'target\': \'结点3\'},
         ]
\'\'\'关系图\'\'\'
graph = (Graph()
        .add(\'\', nodes, links)
        )


graph.render_notebook()

平行坐标系

data = [
    [\'一班\', 78, 91, 123, 78, 82, 67, "优秀"],
    [\'二班\', 89, 101, 127, 88, 86, 75, "良好"],
    [\'三班\', 86, 93, 101, 84, 90, 73, "合格"],
]
\'\'\'平行坐标系\'\'\'
parallel = (Parallel()
           .add_schema([
               opts.ParallelAxisOpts(
                   dim=0,
                   name=\'班级\',
                   type_=\'category\',
                   data=["一班", "二班", "三班"],
               ),
               opts.ParallelAxisOpts(dim=1, name=\'英语\'),
               opts.ParallelAxisOpts(dim=2, name="数学"),
               opts.ParallelAxisOpts(dim=3, name="语文"),
               opts.ParallelAxisOpts(dim=4, name="物理"),
               opts.ParallelAxisOpts(dim=5, name="生物"),
               opts.ParallelAxisOpts(dim=6, name="化学"),
               opts.ParallelAxisOpts(
                dim=7,
                name="评级",
                type_="category",
                data=["优秀", "良好", "合格"],
            ),
           ])
            .add(\'\', data)
)

parallel.render_notebook()

极坐标

cate = [\'Apple\', \'Huawei\', \'Xiaomi\', \'Oppo\', \'Vivo\', \'Meizu\']
data = [123, 153, 89, 107, 98, 23]

\'\'\'极坐标\'\'\'

polar=(
    Polar()
    .add_schema(
        radiusaxis_opts=opts.RadiusAxisOpts(data=cate)
    )
    .add(\'\', data, type_=\'bar\')
)
polar.render_notebook()

雷达图

data = [
    [78, 91, 123, 78, 82, 67],
    [89, 101, 127, 88, 86, 75],
    [86, 93, 101, 84, 90, 73],
]

\'\'\'雷达图\'\'\'
radar = (
    Radar()
    .add_schema(
        schema=[
            opts.RadarIndicatorItem(name=\'语文\', max_=150),
            opts.RadarIndicatorItem(name="数学", max_=150),
            opts.RadarIndicatorItem(name="英语", max_=150),
            opts.RadarIndicatorItem(name="物理", max_=100),
            opts.RadarIndicatorItem(name="生物", max_=100),
            opts.RadarIndicatorItem(name="化学", max_=100),
        ]
    )
    .add(\'\', data)
)
radar.render_notebook()

旭日图

data = [
    {"name": "湖南",
     "children": [
             {"name": "长沙",
              "children": [
                  {"name": "雨花区", "value": 55},
                  {"name": "岳麓区", "value": 34},
                  {"name": "天心区", "value": 144},
              ]},
             {"name": "常德",
              "children": [
                      {"name": "武陵区", "value": 156},
                      {"name": "鼎城区", "value": 134},
              ]},
             {"name": "湘潭", "value": 87},
             {"name": "株洲", "value": 23},
     ],
     },
    {"name": "湖北",
     "children": [
             {"name": "武汉",
              "children": [
                  {"name": "洪山区", "value": 55},
                  {"name": "东湖高新", "value": 78},
                  {"name": "江夏区", "value": 34},
              ]},
             {"name": "鄂州", "value": 67},
             {"name": "襄阳", "value": 34},
     ],
     },
    {"name": "北京", "value": 235}
]

\'\'\'旭日图\'\'\'
sunburst = (
    Sunburst()
    .add(\'\', data_pair=data)
)
sunburst.render_notebook()

桑基图

nodes = [
    {"name": "访问"},
    {"name": "注册"},
    {"name": "付费"},
    {"name": "离开"},
]

links = [
    {"source": "访问", "target": "注册", "value": 50},
    {"source": "注册", "target": "付费", "value": 10},
    {"source": "注册", "target": "离开", "value": 20},
]

\'\'\'桑基图\'\'\'
sankey=(
    Sankey()
    .add(\'\', nodes, links)
)
sankey.render_notebook()

河流图

cate = [\'Apple\', \'Huawei\', \'Xiaomi\', \'Oppo\', \'Vivo\', \'Meizu\']
date_list = ["2020/4/{}".format(i + 1) for i in range(30)]
data = [[day, random.randint(10, 50), c] for day in date_list for c in cate]



\'\'\'河流图\'\'\'
river = (
    ThemeRiver()
    .add(
        series_name=cate,
        data=data,
        singleaxis_opts=opts.SingleAxisOpts(type_=\'time\')
    )
)

river.render_notebook()

词云图

words = [
    (\'Hichens\', 600),
    ("hey", 230),
    ("jude", 124),
    ("dont", 436),
    ("make", 255),
    ("it", 247),
    ("bad", 244),
    ("Take", 138),
    ("a sad song", 184),
    ("and", 12),
    ("make", 165),
    ("it", 247),
    ("better", 182),
    ("remember", 255),
    ("to", 150),
    ("let", 162),
    ("her", 266),
    ("into", 60),
    ("your", 82),
    ("heart", 173),
    ("then", 365),
    ("you", 360),
    ("can", 282),
    ("start", 273),
    ("make", 265),
    (\'LJ\', 600),
]

\'\'\'词云图\'\'\'

wc = (
    WordCloud()
    .add(\'\', words)
)

wc.render_notebook()

data = [
    {"name": "湖南",
     "children": [
             {"name": "长沙",
              "children": [
                  {"name": "雨花区", "value": 55},
                  {"name": "岳麓区", "value": 34},
                  {"name": "天心区", "value": 144},
              ]},
             {"name": "常德",
              "children": [
                      {"name": "武陵区", "value": 156},
                      {"name": "鼎城区", "value": 134},
              ]},
             {"name": "湘潭", "value": 87},
             {"name": "株洲", "value": 23},
     ],
     }
]

\'\'\'树状图\'\'\'
tree = (
    Tree()
    .add(\'\', data)
)
tree.render_notebook()

data = [
    {"name": "湖南",
     "children": [
             {"name": "长沙",
              "children": [
                  {"name": "雨花区", "value": 55},
                  {"name": "岳麓区", "value": 34},
                  {"name": "天心区", "value": 144},
              ]},
             {"name": "常德",
              "children": [
                      {"name": "武陵区", "value": 156},
                      {"name": "鼎城区", "value": 134},
              ]},
             {"name": "湘潭", "value": 87},
             {"name": "株洲", "value": 23},
     ],
     },
    {"name": "湖北",
     "children": [
             {"name": "武汉",
              "children": [
                  {"name": "洪山区", "value": 55},
                  {"name": "东湖高新", "value": 78},
                  {"name": "江夏区", "value": 34},
              ]},
             {"name": "鄂州", "value": 67},
             {"name": "襄阳", "value": 34},
     ],
     },
    {"name": "北京", "value": 235}
]


\'\'\'矩阵树图\'\'\'
treemap = (
    TreeMap()
    .add(\'\', data)
)
treemap.render_notebook()

表格

headers = ["City name", "Area", "Population", "Annual Rainfall"]
rows = [
    ["Brisbane", 5905, 1857594, 1146.4],
    ["Adelaide", 1295, 1158259, 600.5],
    ["Darwin", 112, 120900, 1714.7],
    ["Hobart", 1357, 205556, 619.5],
    ["Sydney", 2058, 4336374, 1214.8],
    ["Melbourne", 1566, 3806092, 646.9],
    ["Perth", 5386, 1554769, 869.4],
]

\'\'\'表格\'\'\'
from pyecharts.components import Table

table = (
    Table()
    .add(headers, rows)
)
table.render_notebook()

3D图

3D散点图

data = [(random.randint(0, 100), random.randint(0, 100), random.randint(0, 100)) for _ in range(100)]

\'\'\'3D散点图\'\'\'
scatter3D = (
    Scatter3D()
    .add(\'\', data)
)
scatter3D.render_notebook()

3D折线图

data = []
for t in range(0, 1000):
    x = math.cos(t/10)
    y = math.sin(t/10)
    z = t/10
    data.append([x, y, z])
    
    
\'\'\'3D折线图\'\'\'

line3D = (
    Line3D()
    .add(\'\', data,
            xaxis3d_opts=opts.Axis3DOpts(type_=\'value\'),
            yaxis3d_opts=opts.Axis3DOpts(type_=\'value\')
        )
)
line3D.render_notebook()

3D直方图

data = [[i, j, random.randint(0, 100)] for i in range(24) for j in range(7)]
hour_list = [str(i) for i in range(24)]
week_list = [\'周日\', \'周一\', \'周二\', \'周三\', \'周四\', \'周五\', \'周六\']

\'\'\'3D直方图\'\'\'
bar3D = (
    Bar3D()
    .add(
        \'\',
        data,
        xaxis3d_opts=opts.Axis3DOpts(hour_list, type_=\'category\'),
        yaxis3d_opts=opts.Axis3DOpts(week_list, type_=\'category\'),
        zaxis3d_opts=opts.Axis3DOpts(type_=\'value\'),
    )
)
bar3D.render_notebook()

3D地图

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

\'\'\'3D地图\'\'\'
map3D = (
    Map3D()
    .add(\'\', data_pair=data, maptype=\'china\')
)
map3D.render_notebook()

3D地球

\'\'\'3D地球\'\'\'
from pyecharts.faker import POPULATION

mapglobe = (
    MapGlobe()
    .add_schema()
    .add(
        series_name=\'\',
        maptype=\'world\',
        data_pair=POPULATION[1:]
    )
)
mapglobe.render_notebook()

分类:

技术点:

相关文章: