Pyecharts page 正确布局指引

1 篇文章 0 订阅
1 篇文章 0 订阅

本文讨论pyecharts page 生成html 保存图标默认位置。

若使生成html出现save config 只需 

page = Page(layout=Page.DraggablePageLayout)

那么结果是如果图表默认顺序排放,现在我们有一种选择,点击save config,这样接下来的图表或许就可以按照我们的意愿排放。

 

如图我们已经进行排序,那么生成json文件后,我们看下数据。

使用edge浏览器保存

[{"cid":"f10f97f459df41dc8d9ef6f33a2c4cc4","width":"900px","height":"500px","top":"31.80000114440918px","left":"8px"},{"cid":"096674c77f1b4c42b1701107d5204de3","width":"900px","height":"500px","top":"554.6000366210938px","left":"8px"},{"cid":"d6909870641f406e9a840d9ac055e6c9","width":"900px","height":"500px","top":"1077.4000244140625px","left":"8px"},{"cid":"b1f331a4089f4e7cb998c498434aeb6c","width":"900px","height":"500px","top":"1600.2000732421875px","left":"8px"},{"cid":"477b2e0eea6d4a40a1f6903cdb5f9ebd","width":"900px","height":"500px","top":"2123px","left":"8px"},{"cid":"ab22f87223ca4259b15b0b076c3b7f6b","width":"900px","height":"500px","top":"2645.800048828125px","left":"8px"},{"cid":"f00271e79ff84ad19d0f4069da4de1f6","width":"900px","height":"500px","top":"3168.60009765625px","left":"8px"},{"cid":"49fdcadf0c50484089efc7abe1d6cf24","width":"900px","height":"500px","top":"3691.400146484375px","left":"8px"},{"cid":"30018c25ff194e829542527be36a1133","width":"900px","height":"500px","top":"4214.2001953125px","left":"8px"}]

 如图cid 我们每个拼凑图表的id,id命名貌似是乱序,没错是乱序,

使用QQ浏览器保存

[{"cid":"627303f7459b42e5be912b3e766d31e9","width":"900px","height":"500px","top":"31px","left":"8px"},{"cid":"7ca6192c397243ec9e03a7689372631e","width":"900px","height":"500px","top":"33px","left":"746px"},{"cid":"7f78608312ec42ad8f3a3a25fd2a933e","width":"900px","height":"500px","top":"531px","left":"-7px"},{"cid":"e951d49cb9304315b53578323032a136","width":"900px","height":"500px","top":"543px","left":"891px"},{"cid":"7fb6119f14874c0cb4271ce7c5ebdd00","width":"900px","height":"500px","top":"2123px","left":"8px"},{"cid":"5942764129184607a24147f3e14b2954","width":"900px","height":"500px","top":"2646px","left":"8px"},{"cid":"429f6552ebe44a089d52e6ba5d56a3d0","width":"900px","height":"500px","top":"3169px","left":"8px"},{"cid":"58dda4df730f454eb0bce11b75087747","width":"900px","height":"500px","top":"3692px","left":"8px"},{"cid":"3035e4a617e34fcfa629abf9d9c3b5e7","width":"900px","height":"500px","top":"4215px","left":"8px2"}]

那么我们的以下代码没有效果

Page.save_resize_html("xxx.html", cfg_file="./xx.json", dest="x.html")

那么直接指定page渲染图表时图表的id即可

bar3.chart_id = "3"
bar4.chart_id = "4"
bar5.chart_id = "5"
pie6.chart_id = "6"
pie7.chart_id = "7"
pie8.chart_id = "8"
pie9.chart_id = "9"

其中bar3

bar3 = (
    Bar(init_opts=opts.InitOpts(theme='westeros', bg_color="#161d6f"))
        .add_xaxis(data3_re['index'].tolist())
        .add_yaxis("三星", data3_re['三星'].tolist(), stack="stack1")
        .add_yaxis("苹果", data3_re['苹果'].tolist(), stack="stack1")
        .add_yaxis("小米", data3_re['小米'].tolist(), stack="stack1")
        .add_yaxis("vivo", data3_re['vivo'].tolist(), stack="stack1")
        .add_yaxis("OPPO", data3_re['OPPO'].tolist(), stack="stack1")
        .add_yaxis("其他", data3_re['其他'].tolist(), stack="stack1")
        .set_global_opts(title_opts=opts.TitleOpts(title="2020-2021年全球智能手机出货量市场份额",
                                                   subtitle="小米将在2021年成为全球第三大智能手机供应商",
                                                   pos_left='center'),
                         legend_opts=opts.LegendOpts(is_show=True, pos_top="bottom"))
        .set_series_opts(label_opts=opts.LabelOpts(position="inside",
                                                   formatter="{c} %"))
)
bar3.render('大屏3.html')

其中

page.add(pie9, bar1, bar2, bar3, bar4, bar5, pie6, pie7, pie8)
page.render("xxxx.html")

最后,html文件中图表即可随意配置,但注意被重新渲染过、生成的html图表无法再次移动

Page.save_resize_html("xxx.html", cfg_file="./xx.json", dest="x.html")

如图:

 本文图表数据来源:懂点excel作图

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
作者Hankkin,源码PageLayoutDemo,一款简单的 page 切换 空布局、错误布局、加载布局,支持一键配置、定义,不需要 xml 编写该功能是支持单独为某个布局设置状态改变的,比如很多同学提到的我一个 listview 的数据没有获取到,fun initPage(targetView: Any),这个 targetView 你只需要设置成你的 listview 或者包裹你 listview 的 parent 布局就 OK 了,具体原理可以看下面的代码解析啊,遍历获取索引,然后记录索引值....项目中我们经常会用到的加载数据,加载完数据后显示内容,如果没有数据显示一个空白页,这是如果网络错误了显示一个网络错误页,自定义一个 PageLayout。绪论Android 中经常使用一个空白页和网络错误页用来提高用户体验,给用户一个较好的感官,如果获取到的数据为空,那么会显示一个空白数据页,如果在获取数据的过程中网络错误了,会显示一个网络异常页,像最近比较火的某东这样,见下图。网上也有一些开源的组件,大部分都是自定义继承某个布局在 xml 中让其作为跟布局,然后将自己的内容布局添加进去,效果也都不错,但是个人总觉得稍微有些麻烦,不是那么灵活,n 多个 xml 布局都去定义,写的心烦,所以有了今天的主角。 思考实现的思路实际上是和上面说的一样,只不过换了一种方式,我们手动获取到 contentView,将它从 DecorView 中移除,然后交给 PageLayout 取管理。当时考虑的时候就是不想在每个 xml 中去写页面切换的布局,那么我们可不可以用 Java 代码去控制?带着下面几个问题一起来看一下。1.自定义一个布局让其作为跟布局2.提供切换加载 loading、空白页 empty、错误页 errror、内容页 content功能3.怎么让其取管理上边的四个页面?4.contentView 怎么添加?5.如果我想切换的跟布局不是个 Activity 或者 Fragment 怎么办?6.因为切换页面状态的功能一般都是一个 APP 统一的,那么可不可以一键配置呢?实现1.代码设计首先我们定义 PageLayout 继承 FrameLayout 或者 LinearLayou 或者其他的布局都可以,然后我们需要提供切换四个布局的功能,当然如果支持自定义就更好了,还有状态布局里面的一些属性,还方便一键配置,所以最后采用了 Builder 模式来创建,使用方式就和 Android 里面的AlertDialog一样,通过 Builder 去构建一个 PageLayout。最后的样子是长这样的:方法注释showLoading()显示 loadingshowError()显示错误布局showEmpty()显示空布局hide()显示内容布局BuildersetLoading()setLoadingText()setError()setDefaultLoadingBlinkText()setEmpty()setLoadingTextColor()setDefaultEmptyText()setDefaultLoadingBlinkColor()setDefaultEmptyTextColor()setDefaultErrorText()setDefaultErrorTextColor()setEmptyDrawable()setErrorDrawable()默认样式PageLayout.Builder(this)                 .initPage(ll_default)                 .setOnRetryListener(object : PageLayout.OnRetryClickListener{                     override fun onRetry() {                         loadData()                     }                 })                 .create()自定义样式PageLayout.Builder(this)                 .initPage(ll_demo)                 .setLoading(R.layout.layout_loading_demo)                 .setEmpty(R.layout.layout_empty_demo,R.id.tv_page_empty_demo)                 .setError(R.layout.layout_error_demo,R.id
### 回答1: 可以通过修改 `Page` 类的 `layout` 属性来调整 `pyecharts` 页面的布局。该属性默认为 `Page.SimplePageLayout`,可以设置为 `Page.DraggablePageLayout` 或 `Page.TabbedPageLayout` 来实现不同的布局效果。例如: ```python from pyecharts.charts import Bar, Line, Pie from pyecharts import options as opts from pyecharts.globals import ThemeType from pyecharts.components import Page # 创建图表 bar_chart = Bar().add_xaxis(["A", "B", "C"]).add_yaxis("Series 1", [1, 2, 3]) line_chart = Line().add_xaxis(["A", "B", "C"]).add_yaxis("Series 2", [4, 5, 6]) pie_chart = Pie().add("", [("A", 7), ("B", 8), ("C", 9)]) # 创建页面并设置布局 page = Page(layout=Page.TabbedPageLayout) # 添加图表到页面 page.add(bar_chart, "Bar Chart") page.add(line_chart, "Line Chart") page.add(pie_chart, "Pie Chart") # 渲染页面 page.render("page.html") ``` 上述代码中,我们创建了一个包含三个图表的页面,并将页面布局设置为 `Page.TabbedPageLayout`,即标签页布局。这样,页面中的三个图表就会以标签页的形式展示。如果想要实现拖拽布局,可以将 `layout` 属性设置为 `Page.DraggablePageLayout`。 ### 回答2: Pyecharts Page 是一个用于组合多个 Pyecharts 组件并呈现在一个网页中的工具。在使用 Pyecharts Page 进行布局时,你可以通过以下几种方式进行调整布局: 1. 使用 grid 的方式对图表进行布局。通过设置 grid 方式,可以将多个图表放在不同的区域中并进行排列。Grid 方式可以通过设置行数、列数和相应区域的大小来实现。 2. 使用 Tab 方式对图表进行切换。可以通过 Tab 组件将多个图表放在不同的标签页中,并通过点击标签页来切换图表。 3. 使用 Scroll 页面滚动的方式来查看图表。当你需要放置多个较大的图表时,可以选择使用 Scroll 方式,通过页面滚动来查看图表。 4. 使用 Overlap 方式将图表叠加显示。Overlap 方式可以将多个图表在同一个区域重叠显示。可以通过调整图表的位置、大小和透明度等属性来实现。 5. 使用 Grid 方式嵌套 Tab 方式进行布局。在一些情况下,你需要将多个图表放在同一个页面中,并且需要将它们分成不同的区域,同时又需要将某些图表放在同一个标签页中。可以使用 Grid 方式嵌套 Tab 方式来实现。 以上几种方式都是常见的 Pyecharts Page 布局方式。你可以根据实际需求选择适合的方式来实现布局,并根据需要进行调整。 ### 回答3: Pyecharts是一个非常流行的 Python 可视化库,它可以利用 Python 语言的简洁和易用性来创建精美的图表。在 Pyecharts 中,Page 是一个类,它可以将多个图表组合成一个完整的页面进行展示。在组合多个图表时,我们经常需要调整页面的布局,以便更好地展示图表的关系和数据。本文将针对 Pyecharts Page 调整布局进行详细地介绍。 ## Pyecharts Page布局方式 在 Pyecharts 中,Page 可以通过 add() 方法来添加不同类型的图表,包括 Bar、Line、Scatter、Map、Gauge 等等。可以说,Page 确实为我们提供了非常灵活的图表组织方式。但是,如果我们需要组合多个图表时,就需要注意布局方式。 默认情况下,Pyecharts Page 中的每个图表都是采用相对独立的方式进行展示,也就是说,每个图表都会占据整个页面的一个矩形区域,而这个区域是相对独立的。这种方式确实具备一定的灵活性,但在实际使用中,它可能会产生过多的空隙,导致图表无法整齐地排列。 为了解决这个问题,Pyecharts 还提供了一些更加灵活的布局方式,包括: 1. Grid 布局方式。Grid 是一个类,它可以将多个图表组合成一个表格。在 Grid 布局中,每个图表都是在表格中的一个格子中进行展示的,而多个格子之间是可以相互合并的。这种方式可以充分利用每个格子的空间,使得图表可以整齐地排列。 2. Overlap 布局方式。Overlap 是一个类,它可以将多个图表叠加在一起进行展示。在 Overlap 布局中,每个图表都是在同一个空间中进行展示的,而且可以相互重叠。这种方式可以将多个图表的信息在同一个图形中呈现,从而使得数据更加直观。 3. Tab 布局方式。Tab 是一个类,它可以将多个图表组合成一个页面,并通过 Tab 标签页的形式进行切换。在 Tab 布局中,每个标签页都会对应一个图表,用户可以根据需要切换不同的标签页来查看不同的图表。这种方式可以将多个图表按照不同的分类进行组织,使得用户可以更加方便地查看不同分类的图表。 ## 如何调整 Pyecharts Page 布局? 在 Pyecharts 中,我们可以通过设置 Page 对象的 layout 属性来调整布局方式。默认情况下,Page 的 layout 属性是 None,也就是使用默认的布局方式。如果需要修改布局方式,可以将 layout 属性设置为相应的布局对象。例如: ```python from pyecharts.charts import Bar, Line, Page, Grid from pyecharts import options as opts # 创建两个图表对象 bar_chart = Bar().add_xaxis(["a", "b", "c"]).add_yaxis("data", [1, 2, 3]) line_chart = Line().add_xaxis(["a", "b", "c"]).add_yaxis("data", [3, 2, 1]) # 创建 Grid 布局对象,指定行数和列数 grid_chart = Grid().add(bar_chart, grid_opts=opts.GridOpts(pos_top="20%", pos_left="5%")).add(line_chart, grid_opts=opts.GridOpts(pos_top="50%", pos_left="5%"), is_control_axis_index=True, is_animation=True) # 创建 Page 对象并添加 Grid 布局 page = Page(layout=grid_chart) # 渲染页面 page.render() ``` 在上面的例子中,我们首先创建了两个图表对象 bar_chart 和 line_chart,之后使用 Grid 布局方式将这两个图表组合成了一个表格。在 Grid 布局中,我们可以通过 grid_opts 参数来指定每个格子的位置、大小以及样式等属性。 之后我们创建了 Page 对象,并将 Grid 布局设置为页面的布局方式,最后通过 render() 方法渲染页面。这样,我们就可以将多个图表整合成一个页面,并进行灵活的布局。 总的来说,调整 Pyecharts Page 布局并不难,只需要了解页面的各种布局方式,并选择适合自己需求的方式即可。在实际使用中,我们可以根据页面的大小、图表的类型以及展示的数据等不同因素来选择合适的布局方式,从而使得图表可以更加整齐、美观、直观地呈现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CBIhalsen

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

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

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

打赏作者

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

抵扣说明:

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

余额充值