pyecharts图形使用指南

写在前面

文章重新写了,因为大部分的示例在
https://gallery.pyecharts.org/#/README
都可以找到,所以优先去官网查吧,我只放一些自己在官网找不到的。

安装pyecharts我就不说了,就说一句如果是内网使用之前先想办法自行下载echarts.min.js文件到内网,然后在Bar(init_opts=opts.InitOpts(js_host=“C:\xxx\”))#这里路径为echarts.min.js所在文件夹即可,后面不再写了。

三维数据气泡图

我的诉求是一个三维数据,横坐标、纵坐标、气泡的大小分别是三组不同的数据,找了全网都没有找到我想要的气泡图,用AI写出来的代码也是完全不顶用,终于在https://gallery.pyecharts.org/#/Dataset/dataset_bar_1找到了一点端倪,然后改了一下。

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


c = (
    Scatter()
    .add_dataset(
        source=[
            ["金额", "时间", "价格"],
            [300, "2023/3/31", 6.8612],
            [300, "2023/3/31", 6.8562],
            [500, "2023/4/7", 6.8707],
            [250, "2023/4/14", 6.8521],
            [300, "2023/4/14", 6.8386],
            [300, "2023/4/14", 6.8501],
            [150, "2023/4/17", 6.8717],
            [300, "2023/4/17", 6.8713],
            [300, "2023/7/14", 7.1378],
            [300, "2023/7/25", 7.1449],
            [200, "2023/11/7", 7.288],
            [200, "2023/11/7", 7.288],
            [200, "2023/11/17", 7.2403],
            [200, "2023/11/17", 7.2428],
        ]
    )
    .add_yaxis(
        series_name="交易(元)",
        y_axis=[],
        encode={"x": "时间", "y": "价格"},
        label_opts=opts.LabelOpts(is_show=False),
    )
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(type_="time"),#注意是time不是datetime
        yaxis_opts=opts.AxisOpts(type_="category"),
        visualmap_opts=opts.VisualMapOpts(
            type_="size",
            min_=150,
            max_=500,
            dimension=0,
            pos_left="right",
        ),
    )
)
c.render_notebook()

在这里插入图片描述

三维气泡图qstock

最近找到一个很好用的三维气泡图的库,应该是市面上最好用的气泡图了,其他的图因为无法编辑参数和叠加被我放弃了,有兴趣的可以自己去qstock的公众号自己看https://mp.weixin.qq.com/s/zmY4gsPDQ6xDDpC-fVBUPg,话不多说上代码。

import pandas as pd

data = pd.read_excel("D:\\XXX\\XX情况.xlsx")

from qstock import plot
import qstock as qs

plot.scatter(data, x="时间", y="价格", size="金额", title="2022-2023年交易(万元)",)

在这里插入图片描述

scatter(data=None, x=None, y=None, title=None, color=None,
size=None,trend=None, legend=True, marginal_x=None, marginal_y=None)
参数说明:
color根据不同类型显示不同颜色;
size根据值大小显示散点图的大小;
trend='ols’添加回归拟合线;
marginal_x=‘violin’,添加小提琴图;
marginal_y= ‘box’,添加箱线图。

标签显示百分比

这个百分比的显示也让我一顿好找,文档都太不友好了。

import pandas as pd

df = pd.read_excel("D:\\预算执行情况.xlsx", sheet_name="预算执行表")

df1 = df.fillna(0)
tb1 = df1.pivot_table(
    index="大类",
    values=[
        "01月差异率",
        "02月差异率",
        "03月差异率",
        "04月差异率",
        "05月差异率",
        "06月差异率",
        "07月差异率",
        "08月差异率",
        "09月差异率",
        "10月差异率",
        "11月差异率",
    ],
    aggfunc="sum",
).T

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.commons.utils import JsCode

c = (
    Line()
    .add_xaxis(tb1.index.to_list())
    .add_yaxis("经营类小计", tb1["经营类小计"].round(4), is_step=True)
    .set_global_opts(title_opts=opts.TitleOpts(title="经营类整体预算差异"))
    .set_series_opts(
        label_opts=opts.LabelOpts(
            position="right",
            formatter=JsCode(
                "function(x){return Number(x.data[1] * 100).toFixed() + '%';}"
            ),
        )
    )

)

c.render_notebook()

在这里插入图片描述

柱状图和线图的组合,并且实现正负值显示不用的颜色

算是一个比较综合的图了,基本上满足常规的数据需要,这种柱状和线图的组合还是挺常用的,为什么excel里就这么简单就出来了呢?就很无语。

import pandas as pd

df = pd.read_excel("D:\\预算执行情况.xlsx", sheet_name="预算执行表")

df1 = df.fillna(0)
tb1 = df1.pivot_table(
    index="大类",
    values=[
        "01月差异",
        "02月差异",
        "03月差异",
        "04月差异",
        "05月差异",
        "06月差异",
        "07月差异",
        "08月差异",
        "09月差异",
        "10月差异",
        "11月差异",
    ],
    aggfunc="sum",
).T

import pyecharts.options as opts
from pyecharts.charts import Line, Bar
from pyecharts.commons.utils import JsCode

color_function = """
        function (params) {
            if (params.value < 0) {
                return 'rgb(97, 160, 168, 0.7)';
            } else if (params.value > 0) {
                return 'rgb(194, 53, 49, 0.7)';
            }
            return 'rgb(97, 160, 168, 0.7)';
        }
        """


line = (
    Line()
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(type_="category"),
        yaxis_opts=opts.AxisOpts(
            type_="value",
            is_scale="True",
        ),
        legend_opts=opts.LegendOpts(
            pos_top="bottom",
        ),  # 图例置底,图例的
    )
    .add_xaxis(xaxis_data=tb1.index.to_list())
    .add_yaxis(
        series_name="经营类收入差异",
        y_axis=tb1["经营类收入"].round(0),
        label_opts=opts.LabelOpts(is_show=True),
    )
    .add_yaxis(
        series_name="经营类支出差异",
        y_axis=-tb1["经营类支出"].round(0),
        label_opts=opts.LabelOpts(is_show=True),
    )
)

bar = (
    Bar()
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(type_="category"),
        yaxis_opts=opts.AxisOpts(
            type_="value",
            is_scale="True",
        ),
        legend_opts=opts.LegendOpts(
            pos_top="bottom",
        ),  # 图例置底,图例的
    )
    .add_xaxis(tb1.index.to_list())
    .add_yaxis(
        series_name="经营类合计差异",
        y_axis=tb1["经营类小计"].round(0).tolist(),
        itemstyle_opts=opts.ItemStyleOpts(color=JsCode(color_function)),
    )
)

overlap = line.overlap(bar)

overlap.render_notebook()

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Python Flask框架进行Pyecharts图形整合,需要安装以下组件: 1. Flask 2. Pyecharts 可以使用以下命令安装: ``` pip install flask pyecharts ``` 然后,创建一个Flask应用程序并设置路由。在路由函数中,可以使用Pyecharts创建图表并将其渲染为HTML字符串。 以下是一个简单的示例: ```python from flask import Flask, render_template from pyecharts.charts import Bar from pyecharts import options as opts app = Flask(__name__) @app.route('/') def index(): # 创建一个柱状图 bar = ( Bar() .add_xaxis(['A', 'B', 'C', 'D', 'E']) .add_yaxis('Series 1', [10, 20, 30, 40, 50]) .set_global_opts(title_opts=opts.TitleOpts(title="Bar Chart")) ) # 将图表渲染为HTML字符串 chart_html = bar.render_embed() # 渲染模板并返回HTML响应 return render_template('index.html', chart_html=chart_html) if __name__ == '__main__': app.run(debug=True) ``` 在上面的示例中,我们创建了一个柱状图,并将其渲染为HTML字符串。然后,我们将HTML字符串传递给模板,并在模板中使用`{{ chart_html|safe }}`渲染图表。 在模板中,我们需要使用Pyecharts提供的JavaScript文件和CSS文件。可以使用以下代码在模板中包含这些文件: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Pyecharts Example</title> <link rel="stylesheet" href="{{ url_for('static', filename='pyecharts/echarts.min.css') }}"> <script type="text/javascript" src="{{ url_for('static', filename='pyecharts/echarts.min.js') }}"></script> <script type="text/javascript" src="{{ url_for('static', filename='pyecharts/pyecharts.min.js') }}"></script> </head> <body> <div id="chart" style="width: 600px; height: 400px;"></div> <script type="text/javascript"> var chart = echarts.init(document.getElementById('chart')); {{ chart_html|safe }} chart.resize(); </script> </body> </html> ``` 在上面的模板中,我们包含了Pyecharts提供的两个JavaScript文件和一个CSS文件。然后,我们在`<div>`元素中创建一个图表容器,并在JavaScript代码中初始化图表并渲染HTML字符串。最后,我们调用`chart.resize()`以确保图表正确缩放。 通过运行上面的代码,可以在http://localhost:5000/上看到创建的图表。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值