以pie谈pyecharts的使用介绍

介绍

软件功能
生成Echarts图表的类库。实际上就是 Echarts 与 Python 的对接。Echarts图表是百度开源的一个数据可视化 JS 库,主要用于数据可视化。使用 pyecharts 可以生成独立的网页,也可以在 flask , Django 中集成使用。
特性:
简洁的 API 设计,使用如丝滑般流畅,支持链式调用
囊括了 30+ 种常见图表,应有尽有
支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
可轻松集成至 Flask,Django 等主流 Web 框架
高度灵活的配置项,可轻松搭配出精美的图表
详细的文档和示例,帮助开发者更快的上手项目
多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持
包含的图表
Bar(柱状图/条形图)
  Bar3D(3D 柱状图)
  Boxplot(箱形图)
  EffectScatter(带有涟漪特效动画的散点图)
  Funnel(漏斗图)
  Gauge(仪表盘)
  Geo(地理坐标系)
  Graph(关系图)
  HeatMap(热力图)
  Kline(K线图)
  Line(折线/面积图)
  Line3D(3D 折线图)
  Liquid(水球图)
  Map(地图)
  Parallel(平行坐标系)
  Pie(饼图)
  Polar(极坐标系)
  Radar(雷达图)
  Sankey(桑基图)
  Scatter(散点图)
  Scatter3D(3D 散点图)
  ThemeRiver(主题河流图)
  WordCloud(词云图)
  用户自定义
  Grid 类:并行显示多张图
  Overlap 类:结合不同类型图表叠加画在同张图上
  Page 类:同一网页按顺序展示多图
  Timeline 类:提供时间线轮播多张图

安装
使用pip install pyecharts

Pie图

# 设置
from pyecharts import options as opts
# 利用Faker数据
from pyecharts.faker import Faker
# 导入pie模块
from pyecharts.charts import Pie
# 为了运行完代码就显示html文件
import os

c = (
    Pie()  # 生成图表的主体
    .add(
        "",
        [list(z) for z in zip(Faker.choose(), Faker.values())]  #数据类容
    ) # 一个add就会出现一个图
    .set_colors(
    	["blue", "green", "yellow", "red", "pink", "orange", "purple"] # 自定义设置数据颜色
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="环饼图"),
        legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%")
    )  # 全局配置内容
    .set_series_opts(
        label_opts=opts.LabelOpts(formatter="{b}:{c}")
    ) # 系列配置内容 
    .render("环饼图test1.html") # //生成本地文件,路径可以自定义,默认当前文件
)
os.system("环饼图test1.html")

全局配置

通过set_global_opts方法设置。

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

c = (
    Bar() # 生成图表的主体
    ...... # 其他业务逻辑
    .set_global_opts(
        ...... # 具体全局配置的内容
    )
    .render("xxxx.html")
)

系列配置

关于formatter的abcd等参数

其中变量a、b、c在不同图表类型下代表数据含义为:
折线(区域)图、柱状(条形)图:
a(系列名称),b(类目值),c(数值), d(无)
散点图(气泡)图
a(系列名称),b(数据名称),c(数值数组), d(无)
饼图、雷达图
a(系列名称),b(数据项名称),c(数值), d(百分比)
弦图
a(系列名称),b(项1名称),c(项1-项2值),d(项2名称), e(项2-项1值)
力导向图
节点 : a(类目名称),b(节点名称),c(节点值)
边 : a(系列名称),b(源名称-目标名称),c(边权重), d(如果为true的话则数据来源是边)

参考:
ECharts中的 formatter中的a,b,c,d等参数的意义

主题风格

Faker数据集

Faker 数据集是 Pyecharts 自带的数据集,Pyecharts 图表案例中使用的可视化数据都来源于 pyecharts 中的 faker.py 文件。
Faker数据有很多类型,如下:
类别数据

clothes = ["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"]
drinks = ["可乐", "雪碧", "橙汁", "绿茶", "奶茶", "百威", "青岛"]
phones = ["小米", "三星", "华为", "苹果", "魅族", "VIVO", "OPPO"]
fruits = ["草莓", "芒果", "葡萄", "雪梨", "西瓜", "柠檬", "车厘子"]
animal = ["河马", "蟒蛇", "老虎", "大象", "兔子", "熊猫", "狮子"]
cars = ["宝马", "法拉利", "奔驰", "奥迪", "大众", "丰田", "特斯拉"]
dogs = ["哈士奇", "萨摩耶", "泰迪", "金毛", "牧羊犬", "吉娃娃", "柯基"]

时间数据

week = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
week_en = ["Saturday", "Friday", "Thursday", "Wednesday", "Tuesday", "Monday", "Sunday"]
clock = ["12a", "1a", "2a", "3a", "4a", "5a", "6a", "7a", "8a", "9a", "10a ", "11a", "12p", "1p", "2p", "3p", "4p", "5p", "6p", "7p", "8p", "9p", "10p", "11p"]
months = ["{}月".format(i) for i in range(1, 13)]
days_attrs = ["{}天".format(i) for i in range(30)]
days_values = [random.randint(1, 30) for _ in range(30)]

颜色数据

visual_color = [
    "#313695",
    "#4575b4",
    "#74add1",
    "#abd9e9",
    "#e0f3f8",
    "#ffffbf",
    "#fee090",
    "#fdae61",
    "#f46d43",
    "#d73027",
    "#a50026",
]

地理数据

provinces = ["广东", "北京", "上海", "江西", "湖南", "浙江", "江苏"]
guangdong_city = ["汕头市", "汕尾市", "揭阳市", "阳江市", "肇庆市", "广州市", "惠州市"]
country = [
    "China",
    "Canada",
    "Brazil",
    "Russia",
    "United States",
    "Africa",
    "Germany",
]

世界人口数据

POPULATION = [
    ["Country (or dependency)", "Population\n(2019)"],
    ["China", 1420062022],
    ["India", 1368737513],
    ["United States", 329093110],
    ["Indonesia", 269536482],
    ["Brazil", 212392717],
    ["Pakistan", 204596442],
    ["Nigeria", 200962417],
    ["Bangladesh", 168065920],
    ["Russia", 143895551],
    ["Mexico", 132328035],
    ["Japan", 126854745],
    ["Ethiopia", 110135635],
    ["Philippines", 108106310],
    ["Egypt", 101168745],
    ["Vietnam", 97429061],
    ["DR Congo", 86727573],
    ["Turkey", 82961805],
    ["Iran", 82820766],
    ["Germany", 82438639],
    ["Thailand", 69306160],
    ["United Kingdom", 66959016],
    ["France", 65480710],
    ["Tanzania", 60913557],
    ["Italy", 59216525],
    ["South Africa", 58065097],
    ["Myanmar", 54336138],
    ["Kenya", 52214791],
    ["South Korea", 51339238],
    ["Colombia", 49849818],
    ["Spain", 46441049],
    ["Uganda", 45711874],
    ["Argentina", 45101781],
    ["Ukraine", 43795220],
    ["Algeria", 42679018],
    ["Sudan", 42514094],
    ["Iraq", 40412299],
    ["Poland", 38028278],
    ["Canada", 37279811],
    ["Afghanistan", 37209007],
    ["Morocco", 36635156],
    ["Saudi Arabia", 34140662],
    ["Peru", 32933835],
    ["Uzbekistan", 32807368],
    ["Venezuela", 32779868],
    ["Malaysia", 32454455],
    ["Angola", 31787566],
    ["Mozambique", 31408823],
    ["Ghana", 30096970],
    ["Nepal", 29942018],
    ["Yemen", 29579986],
    ["Madagascar", 26969642],
    ["North Korea", 25727408],
    ["Côte d'Ivoire", 25531083],
    ["Cameroon", 25312993],
    ["Australia", 25088636],
    ["Taiwan", 23758247],
    ["Niger", 23176691],
    ["Sri Lanka", 21018859],
    ["Burkina Faso", 20321560],
    ["Malawi", 19718743],
    ["Mali", 19689140],
    ["Romania", 19483360],
    ["Kazakhstan", 18592970],
    ["Syria", 18499181],
    ["Chile", 18336653],
    ["Zambia", 18137369],
    ["Guatemala", 17577842],
    ["Zimbabwe", 17297495],
    ["Netherlands", 17132908],
    ["Ecuador", 17100444],
    ["Senegal", 16743859],
    ["Cambodia", 16482646],
    ["Chad", 15814345],
    ["Somalia", 15636171],
    ["Guinea", 13398180],
    ["South Sudan", 13263184],
    ["Rwanda", 12794412],
    ["Benin", 11801595],
    ["Tunisia", 11783168],
    ["Burundi", 11575964],
    ["Belgium", 11562784],
    ["Cuba", 11492046],
    ["Bolivia", 11379861],
    ["Haiti", 11242856],
    ["Greece", 11124603],
    ["Dominican Republic", 10996774],
    ["Czechia", 10630589],
    ["Portugal", 10254666],
    ["Jordan", 10069794],
    ["Sweden", 10053135],
    ["Azerbaijan", 10014575],
    ["United Arab Emirates", 9682088],
    ["Hungary", 9655361],
    ["Honduras", 9568688],
    ["Belarus", 9433874],
    ["Tajikistan", 9292000],
    ["Austria", 8766201],
    ["Serbia", 8733407],
    ["Switzerland", 8608259],
    ["Papua New Guinea", 8586525],
    ["Israel", 8583916],
    ["Togo", 8186384],
    ["Sierra Leone", 7883123],
    ["Hong Kong", 7490776],
    ["Laos", 7064242],
    ["Bulgaria", 6988739],
    ["Paraguay", 6981981],
    ["Libya", 6569864],
    ["El Salvador", 6445405],
    ["Nicaragua", 6351157],
    ["Kyrgyzstan", 6218616],
    ["Lebanon", 6065922],
    ["Turkmenistan", 5942561],
    ["Singapore", 5868104],
    ["Denmark", 5775224],
    ["Finland", 5561389],
    ["Congo", 5542197],
    ["Slovakia", 5450987],
    ["Norway", 5400916],
    ["Eritrea", 5309659],
    ["State of Palestine", 5186790],
    ["Oman", 5001875],
    ["Costa Rica", 4999384],
    ["Liberia", 4977720],
    ["Ireland", 4847139],
    ["Central African Republic", 4825711],
    ["New Zealand", 4792409],
    ["Mauritania", 4661149],
    ["Kuwait", 4248974],
    ["Panama", 4226197],
    ["Croatia", 4140148],
    ["Moldova", 4029750],
    ["Georgia", 3904204],
    ["Puerto Rico", 3654978],
    ["Bosnia and Herzegovina", 3501774],
    ["Uruguay", 3482156],
    ["Mongolia", 3166244],
    ["Albania", 2938428],
    ["Armenia", 2936706],
    ["Jamaica", 2906339],
    ["Lithuania", 2864459],
    ["Qatar", 2743901],
    ["Namibia", 2641996],
    ["Botswana", 2374636],
    ["Lesotho", 2292682],
    ["Gambia", 2228075],
    ["Gabon", 2109099],
    ["North Macedonia", 2086720],
    ["Slovenia", 2081900],
    ["Guinea-Bissau", 1953723],
    ["Latvia", 1911108],
    ["Bahrain", 1637896],
    ["Swaziland", 1415414],
    ["Trinidad and Tobago", 1375443],
    ["Equatorial Guinea", 1360104],
    ["Timor-Leste", 1352360],
    ["Estonia", 1303798],
    ["Mauritius", 1271368],
    ["Cyprus", 1198427],
    ["Djibouti", 985690],
    ["Fiji", 918757],
    ["Réunion", 889918],
    ["Comoros", 850910],
    ["Bhutan", 826229],
    ["Guyana", 786508],
    ["Macao", 642090],
    ["Solomon Islands", 635254],
    ["Montenegro", 629355],
    ["Luxembourg", 596992],
    ["Western Sahara", 582478],
    ["Suriname", 573085],
    ["Cabo Verde", 560349],
    ["Micronesia", 536579],
    ["Maldives", 451738],
    ["Guadeloupe", 448798],
    ["Brunei", 439336],
    ["Malta", 433245],
    ["Bahamas", 403095],
    ["Belize", 390231],
    ["Martinique", 385320],
    ["Iceland", 340566],
    ["French Guiana", 296847],
    ["French Polynesia", 288506],
    ["Vanuatu", 288017],
    ["Barbados", 287010],
    ["New Caledonia", 283376],
    ["Mayotte", 266380],
    ["Sao Tome & Principe", 213379],
    ["Samoa", 198909],
    ["Saint Lucia", 180454],
    ["Guam", 167245],
    ["Channel Islands", 166828],
    ["Curaçao", 162547],
    ["Kiribati", 120428],
    ["St. Vincent & Grenadines", 110488],
    ["Tonga", 110041],
    ["Grenada", 108825],
    ["Aruba", 106053],
    ["U.S. Virgin Islands", 104909],
    ["Antigua and Barbuda", 104084],
    ["Seychelles", 95702],
    ["Isle of Man", 85369],
    ["Andorra", 77072],
    ["Dominica", 74679],
    ["Cayman Islands", 63129],
    ["Bermuda", 60833],
    ["Greenland", 56673],
    ["Saint Kitts & Nevis", 56345],
    ["American Samoa", 55727],
    ["Northern Mariana Islands", 55246],
    ["Marshall Islands", 53211],
    ["Faeroe Islands", 49692],
    ["Sint Maarten", 40939],
    ["Monaco", 39102],
    ["Liechtenstein", 38404],
    ["Turks and Caicos", 36461],
    ["Gibraltar", 34879],
    ["San Marino", 33683],
    ["British Virgin Islands", 32206],
    ["Caribbean Netherlands", 25971],
    ["Palau", 22206],
    ["Cook Islands", 17462],
    ["Anguilla", 15174],
    ["Wallis & Futuna", 11617],
    ["Tuvalu", 11393],
    ["Nauru", 11260],
    ["Saint Pierre & Miquelon", 6375],
    ["Montserrat", 5220],
    ["Saint Helena", 4096],
    ["Falkland Islands", 2921],
    ["Niue", 1628],
    ["Tokelau", 1340],
    ["Holy See", 799],
]

数据随机选择方法

def choose(self) -> list:
    return random.choice(
        [
            self.clothes,
            self.drinks,
            self.phones,
            self.fruits,
            self.animal,
            self.dogs,
            self.week,
        ]
    )

@staticmethod
def values(start: int = 20, end: int = 150) -> list:
    return [random.randint(start, end) for _ in range(7)]

@staticmethod
def rand_color() -> str:
    return random.choice(
        [
            "#c23531",
            "#2f4554",
            "#61a0a8",
            "#d48265",
            "#749f83",
            "#ca8622",
            "#bda29a",
            "#6e7074",
            "#546570",
            "#c4ccd3",
            "#f05b72",
            "#444693",
            "#726930",
            "#b2d235",
            "#6d8346",
            "#ac6767",
            "#1d953f",
            "#6950a1",
        ]
    )

@staticmethod
def img_path(path: str, prefix: str = "images") -> str:
    return os.path.join(prefix, path)


Faker = _Faker()


class Collector:
    charts = []

    @staticmethod
    def funcs(fn):
        Collector.charts.append((fn, fn.__name__))

一些问题

pyecharts中怎么显示整数?浮点数??

利用f_string将data转成相应的数据。

pycharts中x轴显示不全?

将x轴旋转一定角度,即在set_global_opts()属性中添加:

set_global_opts(
        title_opts=opts.TitleOpts(title='名字'),
        xaxis_opts=opts.AxisOpts(axislabel_opts={"rotate":45})
        )

小tips

  1. 数据中如有省市等元素,用map图更好。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值