Pyecharts基础

Pyecharts基础

官网:https://pyecharts.org/#/

折线图示例:https://gallery.pyecharts.org/#/Line/line_base

1.安装pyecharts

pip insatll pyecharts -i https://pypi.doubanio.com/simple

2.绘图基本步骤

  • 准备数据
  • 设计样式、背景颜色
  • 绘图
  • 设计标题、图例等属性
  • 导出html

3.示例

3.1柱状图

#导入相关库
from pyecharts import options as opts 
from pyecharts.charts import Bar 
from pyecharts.faker import Faker 
import numpy as np

happiness = np.random.randint(100,200,6).tolist()
sadness = np.random.randint(20,40,6).tolist()

c = Bar()
#添加X轴数据
c.add_xaxis([year for year in range(2016,2022,1)])
#添加Y轴数据
c.add_yaxis("幸福指数", happiness)
c.add_yaxis("悲伤指数", sadness)
#设置标题和子标题
c.set_global_opts(title_opts=opts.TitleOpts(title="近六年的健康状况", subtitle="2016-2021"))
#导出html文件
c.render("bar_base.html")

image-20220109105528330

3.2折线图

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker

c = (
    Line()
    .add_xaxis(['a','b','c','d'])
    .add_yaxis("商家A", [2,4,6,8])
    .add_yaxis("商家B", [56,89,23,56])
    .set_global_opts(title_opts=opts.TitleOpts(title="Line-基本示例"))
    .render("line_base.html")
)

image-20220109120000164

3.3漏斗图

from pyecharts import options as opts
from pyecharts.charts import Funnel
from pyecharts.faker import Faker

c = (
    Funnel()
    .add("商品", [list(z) for z in zip(['憨憨','花生','study','sports','goodness'], [66,60,50,45])])
    .set_global_opts(title_opts=opts.TitleOpts(title="憨憨的属性"))
    .render("funnel_base.html")
)

image-20220109120804911

3.4涟漪散点图

from pyecharts import options as opts
from pyecharts.charts import EffectScatter
from pyecharts.faker import Faker

c = (
    EffectScatter()
    .add_xaxis(Faker.choose())
    .add_yaxis("", Faker.values())
    .set_global_opts(title_opts=opts.TitleOpts(title="EffectScatter-基本示例"))
    .render("effectscatter_base.html")
)

image

3.5地理坐标

from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.faker import Faker

c = (
    Geo()
    .add_schema(maptype="china")
    .add("", [list(z) for z in zip(['江苏','湖北','山西','河南','安徽','山东'], ['school','home','love','憨憨','憨憨','憨憨'])])
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Geo-基本示例")
    )
    .render("geo_base.html")
)

image-20220109121840661

3.6词云图

from pyecharts import options as opts
from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType


words = [
    ("Sam S Club", 10000),
    ("Macys", 6181),
    ("Amy Schumer", 4386),
    ("Jurassic World", 4055),
    ("Charter Communications", 2467),
    ("Chick Fil A", 2244),
    ("Planet Fitness", 1868),
    ("Pitch Perfect", 1484),
    ("Express", 1112),
    ("Home", 865),
    ("Johnny Depp", 847),
    ("Lena Dunham", 582),
    ("Lewis Hamilton", 555),
    ("KXAN", 550),
    ("Mary Ellen Mark", 462),
    ("Farrah Abraham", 366),
    ("Rita Ora", 360),
    ("Serena Williams", 282),
    ("NCAA baseball tournament", 273),
    ("Point Break", 265),
]
c = (
    WordCloud()
    .add("", words, word_size_range=[20, 100], shape=SymbolType.DIAMOND)
    .set_global_opts(title_opts=opts.TitleOpts(title="WordCloud-shape-diamond"))
    .render("wordcloud_diamond.html")
)

image-20220109122515947

3.7关系图

from pyecharts import options as opts
from pyecharts.charts import Graph

nodes = [
    {"name": "憨憨", "symbolSize": 10,"value":10},
    {"name": "花生", "symbolSize": 20,"value":20},
    {"name": "图书馆", "symbolSize": 100,"value":100},
    {"name": "吃早饭", "symbolSize": 90,"value":90},
    {"name": "吃午饭", "symbolSize": 99,"value":99},
    {"name": "吃晚饭", "symbolSize": 88,"value":88},
    {"name": "吃零食", "symbolSize": 78,"value":78},
    {"name": "吃夜宵", "symbolSize": 20,"value":20},
]
categories=[10,20,56,66,66,66,66,66,66]
links = []
for i in nodes:
    for j in nodes:
        links.append({"source": i.get("name"), "target": j.get("name")})
c = (
    Graph()
    .add("", nodes, links,repulsion=8000,label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="Graph-基本示例"))
    .render("graph_base.html")
)

image-20220109125351301

3.6更多示例

https://gallery.pyecharts.org/#/Line/line_base

4.设置属性

4.1设置主题和数据集

class _ThemeType:
    BUILTIN_THEMES = ["light", "dark", "white"]
    LIGHT = "light"
    DARK = "dark"
    WHITE = "white"
    CHALK: str = "chalk"
    ESSOS: str = "essos"
    INFOGRAPHIC: str = "infographic"
    MACARONS: str = "macarons"
    PURPLE_PASSION: str = "purple-passion"
    ROMA: str = "roma"
    ROMANTIC: str = "romantic"
    SHINE: str = "shine"
    VINTAGE: str = "vintage"
    WALDEN: str = "walden"
    WESTEROS: str = "westeros"
    WONDERLAND: str = "wonderland"
    HALLOWEEN: str = "halloween"
def choose(self) -> list:
    return random.choice(
        [
            self.clothes,
            self.drinks,
            self.phones,
            self.fruits,
            self.animal,
            self.dogs,
            self.week,
        ]
    )
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

c = (
    Bar(init_opts=opts.InitOpts(theme='walden'))
    .add_xaxis(Faker.fruits)
    .add_yaxis("商家1", Faker.values())
    .add_yaxis("商家2", Faker.values())
    .set_global_opts(title_opts=opts.TitleOpts(title="这是主标题", subtitle="这是副标题"))
    .render("bar_base.html")
)

image-20220109130543218

4.2设置图例位置、坐标轴标签

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

c = (
    Bar(init_opts=opts.InitOpts(theme='walden'))
    .add_xaxis(Faker.fruits)
    .add_yaxis("商家1", Faker.values())
    .add_yaxis("商家2", Faker.values())
    .set_global_opts(title_opts=opts.TitleOpts(title="这是主标题", subtitle="这是副标题"),
    #图例的位置
    legend_opts=opts.LegendOpts(type_="scroll", orient="vertical",pos_top="5%",pos_left="75%"),
    #设置坐标轴旋转
    xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=15)),
)
    .render("bar_base.html")
)

image-20220109134037380

posted @ 2022-01-09 13:43  不会写代码的花生  阅读(204)  评论(0)    收藏  举报