薪酬上不去,报表太难看,来看看pyechart的画布布局,能否拯救你的报表布局

pyechart的画布布局


在这里插入图片描述


控制画布的垂直布局-Page

在这里插入图片描述

page1=(Page(page_title="造价四剑客",layout=Page.SimplePageLayout))
page1.add(bar)
page1.render("造价四剑客.html")

在这里插入图片描述

准备好三个图,我先把一个图用page安排上去,这是效果。

再上一个图。

page1=(Page(page_title="造价四剑客",layout=Page.SimplePageLayout))
page1.add(bar,
          bar2)
page1.render("造价四剑客.html")

在这里插入图片描述

看到这,大家肯定知道,page是在干什么了,它在竖直方向一直不停的堆积图片,称之为【顺序多图】,大家理解了吗?

page1=(Page(page_title="造价四剑客",layout=Page.SimplePageLayout))
page1.add(bar,
          bar2,
          bar3)
page1.render("造价四剑客.html")

在这里插入图片描述

堆积3个图,意料之中!!!

并行多图

我们一起来探究一下grid,首先一点,grid比page的方法多很多,其次,灵活性也更加强!!!
先上一个图,不急我们先试试!

grid1 = (
    Grid(init_opts=opts.InitOpts(width="1700px",height="750px"))
    .add(bar,grid_opts=opts.GridOpts(is_show=True,pos_left="10%",pos_right="40%"))
    #.add(bar2,grid_opts=opts.GridOpts(is_show=True,pos_left="20%",pos_right="50%"))
    .render("造价四剑客.html")
)

在这里插入图片描述

好的现在再来,再加一个。

grid1 = (Grid(init_opts=opts.InitOpts(width="1700px",height="750px")))
grid1.add(bar,grid_opts=opts.GridOpts(is_show=True,pos_right="55%"))
grid1.add(bar2,grid_opts=opts.GridOpts(is_show=True,pos_left="55%"))
grid1.render("造价四剑客.html")

在这里插入图片描述

看看中间的图例,全部重合,完了。

不急,我们一起来调整一下全局配置就好。和我一起来!
给bar和bar2分别加上.set_global_opts,详细代码如下:

#bar的全部代码
bar = (
        Bar()
        .add_xaxis(Faker.week)
        .add_yaxis(
            "蒸发量",
            [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
            #yaxis_index=0,
            color="#d14a61",
        )
        .add_yaxis(
            "降水量",
            [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],
            #yaxis_index=1,
            color="#5793f3",
        )
    .set_global_opts(legend_opts=opts.LegendOpts(pos_left="25%"))
#bar2的全部代码
bar2 = (
    Bar()
    .add_xaxis(
        [
            "名字很长的X轴标签1",
            "名字很长的X轴标签2",
            "名字很长的X轴标签3",
            "名字很长的X轴标签4",
            "名字很长的X轴标签5",
            "名字很长的X轴标签6",
        ]
    )
    .add_yaxis("商家A", [10, 20, 30, 40, 50, 40])
    .add_yaxis("商家B", [20, 10, 40, 30, 40, 50])
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        title_opts=opts.TitleOpts(title="", subtitle=""),
        legend_opts=opts.LegendOpts(pos_right="25%")
    )

)

最后的效果如下:【是不是搞定了?】
并且我们可以看到的是,这个图是在同一层摆放的。

在这里插入图片描述

顺序并行综合应用

现在我们来综合运用一下,来加强我们的布局美观

Tips:当你把图片布局的代码换成这样

grid1 = (Grid(init_opts=opts.InitOpts(width="1700px",height="750px")))
grid1.add(bar,grid_opts=opts.GridOpts(is_show=True,pos_right="55%"))
grid1.add(bar2,grid_opts=opts.GridOpts(is_show=True,pos_left="25%"))
grid1.render("造价四剑客.html")
# 原来是这样的
grid1 = (Grid(init_opts=opts.InitOpts(width="1700px",height="750px")))
grid1.add(bar,grid_opts=opts.GridOpts(is_show=True,pos_right="55%"))
grid1.add(bar2,grid_opts=opts.GridOpts(is_show=True,pos_left="55%"))
grid1.render("造价四剑客.html")

你会发现自己的图片,竟然重叠在一起了,这是不想看到的,所以希望你可以调整好自己的pos_left和pos_right参数。

在这里插入图片描述


接下来我们进入正题!

grid1 = (Grid(init_opts=opts.InitOpts(width="1600px")))
grid1.add(bar,grid_opts=opts.GridOpts(is_show=True,pos_right="55%"))
grid1.add(bar2,grid_opts=opts.GridOpts(is_show=True,pos_left="55%"))
page1=(Page(page_title="造价四剑客",layout=Page.SimplePageLayout))
page1.add(grid1)
page1.add(bar3)
page1.render("造价四剑客.html")

在这里插入图片描述

成功组合在一起了。

最后我想说,平时用的比较多的一般是grid,page用的比较少,因为在一个页面中你可以很容易的完成你的大屏布局,但是如果你想要滚动式的,多方面进行相应的图表展示,可能你就会用到很多page了。


附上全部代码:

from pyecharts.charts import Page,Bar,Grid
from pyecharts import options as opts
from pyecharts.faker import Faker

bar = (
        Bar()
        .add_xaxis(Faker.week)
        .add_yaxis(
            "蒸发量",
            [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
            #yaxis_index=0,
            color="#d14a61",
        )
        .add_yaxis(
            "降水量",
            [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],
            #yaxis_index=1,
            color="#5793f3",
        )
    .set_global_opts(legend_opts=opts.LegendOpts(pos_left="25%"))
    #     .extend_axis(
    #         yaxis=opts.AxisOpts(
    #             name="蒸发量",
    #             type_="value",
    #             min_=0,
    #             max_=250,
    #             position="right",
    #             axisline_opts=opts.AxisLineOpts(
    #                 linestyle_opts=opts.LineStyleOpts(color="#d14a61")
    #             ),
    #             axislabel_opts=opts.LabelOpts(formatter="{value} ml"),
    #         )
    #     )
    #     .extend_axis(
    #         yaxis=opts.AxisOpts(
    #             type_="value",
    #             name="温度",
    #             min_=0,
    #             max_=25,
    #             position="left",
    #             axisline_opts=opts.AxisLineOpts(
    #                 linestyle_opts=opts.LineStyleOpts(color="#675bba")
    #             ),
    #             axislabel_opts=opts.LabelOpts(formatter="{value} °C"),
    #             splitline_opts=opts.SplitLineOpts(
    #                 is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)
    #             ),
    #         )
    #     )
    #     .set_global_opts(
    #         yaxis_opts=opts.AxisOpts(
    #             name="降水量",
    #             min_=0,
    #             max_=250,
    #             position="right",
    #             offset=80,
    #             axisline_opts=opts.AxisLineOpts(
    #                 linestyle_opts=opts.LineStyleOpts(color="#5793f3")
    #             ),
    #             axislabel_opts=opts.LabelOpts(formatter="{value} ml"),
    #         ),
    #         title_opts=opts.TitleOpts(title=""),
    #         tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
    # )
)

bar3 = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values(), stack="stack1")
    .add_yaxis("商家B", Faker.values(), stack="stack1")
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title=""))

)

bar2 = (
    Bar()
    .add_xaxis(
        [
            "名字很长的X轴标签1",
            "名字很长的X轴标签2",
            "名字很长的X轴标签3",
            "名字很长的X轴标签4",
            "名字很长的X轴标签5",
            "名字很长的X轴标签6",
        ]
    )
    .add_yaxis("商家A", [10, 20, 30, 40, 50, 40])
    .add_yaxis("商家B", [20, 10, 40, 30, 40, 50])
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        title_opts=opts.TitleOpts(title="", subtitle=""),
        legend_opts=opts.LegendOpts(pos_right="25%")
    )

)

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

nodes = [
    {"name": "结点1", "symbolSize": 10},
    {"name": "结点2", "symbolSize": 20},
    {"name": "结点3", "symbolSize": 30},
    {"name": "结点4", "symbolSize": 40},
    {"name": "结点5", "symbolSize": 50},
    {"name": "结点6", "symbolSize": 40},
    {"name": "结点7", "symbolSize": 30},
    {"name": "结点8", "symbolSize": 20},
]
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)
    .set_global_opts(title_opts=opts.TitleOpts(title="Graph-基本示例"))

)







grid1 = (Grid(init_opts=opts.InitOpts(width="1600px")))
grid1.add(bar,grid_opts=opts.GridOpts(is_show=True,pos_right="55%"))
grid1.add(bar2,grid_opts=opts.GridOpts(is_show=True,pos_left="55%"))
page1=(Page(page_title="造价四剑客",layout=Page.SimplePageLayout))
page1.add(grid1)

page1.add(bar3)
page1.add(c)

page1.render("造价四剑客.html")

最后希望大家事事如意,都能完成自己的理想!!!

在这里插入图片描述

在使用Three.js创建的canvas画布布局方面,你可以根据你的项目需求将渲染结果renderer.domElement插入到web页面上的任何一个元素中。你可以通过设置元素的样式来控制canvas画布的位置和大小。例如,你可以使用div元素来容纳canvas画布,并设置div元素的样式来控制canvas画布的位置和边距。下面是一个示例代码: ```html <div id="webgl" style="margin-top: 100px; margin-left: 200px;"></div> ``` 在这个示例中,我们使用一个id为"webgl"的div元素来容纳canvas画布,并设置了margin-top和margin-left属性来控制canvas画布的位置。你可以根据需要调整这些属性的值来实现你想要的布局效果。然后,你可以使用JavaScript代码将渲染结果插入到这个div元素中,例如: ```javascript document.getElementById('webgl').appendChild(renderer.domElement); ``` 这样,canvas画布就会被插入到id为"webgl"的div元素中,实现了你所需的布局效果。你也可以根据需要将canvas画布插入到其他元素中,只要符合你项目的布局规则即可。 #### 引用[.reference_title] - *1* *3* [Canvas画布布局和全屏展示](https://blog.csdn.net/BradenHan/article/details/130055592)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Three.js教程:Canvas画布布局和全屏](https://blog.csdn.net/ygtu2018/article/details/131300425)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

い风花の雪栎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值