{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 7.1 饼图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pyecharts.faker import Faker"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 基础饼图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 引入相关包\n",
    "from pyecharts import options as opts\n",
    "from pyecharts.charts import Pie"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 准备数据\n",
    "items = Faker.choose()\n",
    "values = Faker.values()\n",
    "\n",
    "print(items)\n",
    "print(values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "pie_data = [list(z) for z in zip(items, values)]\n",
    "print(pie_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "(\n",
    "    Pie()\n",
    "    .add(\"\", pie_data)\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"饼图\"))\n",
    "    .set_series_opts(label_opts=opts.LabelOpts(formatter=\"{b}占比是{d}%\"))\n",
    ").render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 圆环图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "(\n",
    "    Pie()\n",
    "    .add(\"\", \n",
    "         pie_data,\n",
    "         radius=['50%', '60%']\n",
    "    )\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"圆环图\"))\n",
    "    .set_series_opts(label_opts=opts.LabelOpts(formatter=\"{b}: {d}%\"))\n",
    ").render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 7.2 矩形树图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 生成数据\n",
    "treemap_data = [\n",
    "    {\"value\": 40, \"name\": \"类别A\"},\n",
    "    {\n",
    "        \"value\": 180,\n",
    "        \"name\": \"类别B\",\n",
    "        \"children\": [\n",
    "            {\n",
    "                \"value\": 76,\n",
    "                \"name\": \"类别B的children\",\n",
    "                \"children\": [\n",
    "                    {\"value\": 12, \"name\": \"类别B的子类A\"},\n",
    "                    {\"value\": 28, \"name\": \"类别B的子类B\"},\n",
    "                    {\"value\": 20, \"name\": \"类别B的子类C\"},\n",
    "                    {\"value\": 16, \"name\": \"类别B的子类D\"},\n",
    "                ],\n",
    "            }\n",
    "        ],\n",
    "    },\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pyecharts.charts import TreeMap\n",
    "(\n",
    "    TreeMap()\n",
    "    .add(\"所有数据\", treemap_data)\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"矩形树图\"))\n",
    ").render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 7.3 其他成分比例图表"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多饼图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "(\n",
    "    Pie()\n",
    "    .add(\n",
    "        \"\",\n",
    "        [list(z) for z in zip([\"剧情\", \"其他\"], [25, 75])],\n",
    "        center=[\"20%\", \"30%\"],\n",
    "        radius=[60, 80],\n",
    "    )\n",
    "    .add(\n",
    "        \"\",\n",
    "        [list(z) for z in zip([\"奇幻\", \"其他\"], [24, 76])],\n",
    "        center=[\"55%\", \"30%\"],\n",
    "        radius=[60, 80],\n",
    "    )\n",
    "    .add(\n",
    "        \"\",\n",
    "        [list(z) for z in zip([\"爱情\", \"其他\"], [14, 86])],\n",
    "        center=[\"20%\", \"70%\"],\n",
    "        radius=[60, 80],\n",
    "    )\n",
    "    .add(\n",
    "        \"\",\n",
    "        [list(z) for z in zip([\"惊悚\", \"其他\"], [11, 89])],\n",
    "        center=[\"55%\", \"70%\"],\n",
    "        radius=[60, 80],\n",
    "    )\n",
    "    .set_global_opts(\n",
    "        title_opts=opts.TitleOpts(title=\"Pie-多饼图基本示例\"),\n",
    "        legend_opts=opts.LegendOpts(\n",
    "            pos_top=\"20%\", pos_left=\"80%\", orient=\"vertical\"\n",
    "        ),\n",
    "    )\n",
    "    .set_series_opts(label_opts=opts.LabelOpts(formatter=\"{b}: {d}%\"))\n",
    ").render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 玫瑰图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "(\n",
    "    Pie()\n",
    "    .add(\n",
    "        \"\",\n",
    "        pie_data,\n",
    "        radius=[\"30%\", \"75%\"],\n",
    "#         rosetype=\"radius\",\n",
    "        rosetype=\"area\",\n",
    "    )\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"玫瑰图\"))\n",
    "    .set_series_opts(label_opts=opts.LabelOpts(formatter=\"{b}: {c}\"))\n",
    ").render_notebook()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 雷达图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据准备\n",
    "v1 = [[4300, 10000, 28000, 35000, 50000, 19000]]\n",
    "v2 = [[5000, 14000, 28000, 31000, 42000, 21000]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义schema\n",
    "schema = [\n",
    "    opts.RadarIndicatorItem(name=\"销售\", max_=6500),\n",
    "    opts.RadarIndicatorItem(name=\"管理\", max_=16000),\n",
    "    opts.RadarIndicatorItem(name=\"信息技术\", max_=30000),\n",
    "    opts.RadarIndicatorItem(name=\"客服\", max_=38000),\n",
    "    opts.RadarIndicatorItem(name=\"研发\", max_=52000),\n",
    "    opts.RadarIndicatorItem(name=\"市场\", max_=25000),\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pyecharts.charts import Radar\n",
    "\n",
    "(\n",
    "    Radar()\n",
    "    .add_schema(schema)\n",
    "    .add(\n",
    "        series_name=\"预算分配\",\n",
    "        data=v1,\n",
    "        linestyle_opts=opts.LineStyleOpts(color=\"#CD0000\"),\n",
    "    )\n",
    "    .add(\n",
    "        series_name=\"实际开销\",\n",
    "        data=v2,\n",
    "        linestyle_opts=opts.LineStyleOpts(color=\"#5CACEE\"),\n",
    "    )\n",
    "    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))\n",
    "    .set_global_opts(title_opts=opts.TitleOpts(title=\"雷达图\"))\n",
    ").render_notebook()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "data_anal_env",
   "language": "python",
   "name": "data_anal_env"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
