公众号:尤而小屋
作者:Peter
编辑:Peter

可视化神器Plotly美化表格

有时候看到一份表格,没有任何的颜色修饰,总觉得缺点美观效果。在Excel中我们可以直接对字体的颜色、大小等进行设置,还可以进行单元格的颜色填充,在plotly中美化表格输出主要是有两种方式:

  • 使用go.Table方法
  • 使用figure_factory的creat_table方法

Plotly连载文章

导入库

import pandas as pd
import numpy as npimport plotly_express as px
import plotly.graph_objects as go  # 方法1:go.Table
import plotly.figure_factory as ff # 方法2:图形工厂

go.Table实现

该方法类似其他的图表绘制,直接使用go.Table方法之后往其中加入数据

基础表格

添加表头和单元格中的数据

import plotly.graph_objects as gofig = go.Figure(data=[go.Table(header=dict(values=['语文', '数学']),  # 表头:列表形式cells=dict(values=[[100, 90, 140, 123], # 单元格添加:第一列元素[105, 135, 75, 95]])) # 第二列元素])
fig.show()

个性化表格设置

import plotly.graph_objects as gofig = go.Figure(data=[go.Table(header=dict(values=['语文', '数学'],   # 表头:字典形式line_color="darkslategray",  # 表头线条颜色fill_color="lightskyblue",  # 表头填充色align="center"  # 文本显示位置 'left', 'center', 'right'), cells=dict(values=[[100, 90, 140, 123], # 单元格添加:第一列元素[105, 135, 75, 95]], # 第二列元素line_color="darkslategray",  # 单元格线条颜色fill_color="lightcyan",  # 单元格填充色align="center"  # 文本显示位置))])fig.update_layout(width=600,height=400)fig.show()

DataFrame转成表格

将DataFrame数据快速转成漂亮的表格

# 绘图fig = go.Figure(data=[go.Table(header=dict(values=list(data.columns),  # 表头取值是data列属性fill_color='paleturquoise',  # 填充色和文本位置align='left'),cells=dict(values=[data.性别,data.年龄,data.成绩],  # 单元格的取值就是每个列属性的Series取值fill_color='lavender',align='left'))]
)fig.show()

改变row和column的大小

有时候单元格的数据太长,我们需要进行单元格大小的调整

import plotly.graph_objects as govalues = [["李白 唐代","杜甫 唐代","苏轼 宋代","王安石 宋代"], # 第一列数据["床前明月,疑是地上霜;举头望明月,低头思故乡","国破山河在,城春草木深。感时花溅泪,恨别鸟惊心。<br>烽火连三月,家书抵万金。白头骚更短,浑欲不胜簪。","十年生死两茫茫,不思量,自难忘。千里孤坟,无处话凄凉。<br>纵使相逢应不识,尘满面,鬓如霜。<br>夜来幽梦忽还乡,小轩窗,正梳妆。相顾无言,惟有泪千行。<br>料得年年肠断处,明月夜,短松冈。","念往昔、繁华竞逐。叹门外楼头,悲恨相续。<br>千古凭高,对此谩嗟荣辱。<br>六朝旧事随流水,但寒烟、芳草凝绿。<br>至今商女,时时犹唱后庭遗曲。"]]fig = go.Figure(data=[go.Table(columnorder = [1,2],  # 列属性的顺序columnwidth = [800,4000],  # 列属性中元素所占单元格整体大小# 表头header = dict(values=[["唐宋作家"],["代表作品"]],  # 两个表头line_color='darkslategray',  # 线条和填充色fill_color='royalblue',align=['left','center'], # 位置font=dict(color='white', size=12), # 表头文本的颜色和字体大小font_size=12,height=40  # 高度),# 单元格设置cells = dict(values=values,  # 数据line_color='darkslategray',  # 线条颜色fill=dict(color=['paleturquoise', 'white']),align=['left', 'center'],  # 两个列属性文本显示位置font_size=12,  # 字体大小height=50))
])#fig.update_layout(width=600,height=400)fig.show()

设置表格渐变色

import plotly.graph_objects as goimport pandas as pdcolors = ['rgb(239, 243, 255)',  # rgb值越接近255,越接近白色'rgb(189, 215, 231)', 'rgb(107, 174, 214)','rgb(59, 130, 189)', 'rgb(9, 81, 156)']data = {'Year' : [2015, 2016, 2017, 2018, 2019], 'Color' : colors}df = pd.DataFrame(data)print(df)fig = go.Figure(data=[go.Table(# 表头header=dict(values=["Color", "<b>YEAR</b>"],  # 表头名称line_color='white', fill_color='white',align='center', font=dict(color='black', size=12)),# 单元格cells=dict(values=[df.Color, df.Year],  # 两个列属性line_color=[df.Color], fill_color=[df.Color],align='center', font=dict(color='black', size=13)))
])fig.show()

表格数据滑动

当DataFrame中的数据过多的时候,我们可以进行滑动展示和查看:

student = pd.DataFrame({"性别":["小明","小红","小周","小孙","小苏"] * 100,  # 将数据同时扩大100倍"年龄":[19,29,32,20,18] * 100,"性别":["男","女","男","女","男"] * 100,"成绩":[590,588,601,670,555] * 100})
student

# 绘图fig = go.Figure(data=[go.Table(header=dict(values=list(student.columns),  # 表头取值是data列属性fill_color='paleturquoise',  # 填充色和文本位置align='left'),cells=dict(values=[student.性别,student.年龄,student.成绩],  # 单元格的取值就是每个列属性的Series取值fill_color='lavender',align='left'))]
)fig.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v0mYSKtc-1629908245058)(https://tva1.sinaimg.cn/large/008i3skNgy1gtnk78qx8sg60go07nnpg02.gif)]

creat_table

第二种方法是使用图形工厂中的creat_table方法来生成

基础图表生成

DataFrame数据生成表格

import plotly.figure_factory as ff
fig = ff.create_table(tips)   # 将生成的tips数据放入
fig.show()

数据中添加链接

设置宽度

import plotly.figure_factory as ffdata = [['姓名', '年龄', '成绩'],  # 表头['小明', 20, 620],  # 每个列表代表一行记录['小红', 22, 677],['小周', 19, 606]]fig = ff.create_table(data,height_constant=20)  # 改变宽度
#fig = ff.create_table(data,height_constant=50)fig.show()

改变宽度后的样子:

颜色设置

import plotly.figure_factory as ff# 颜色设置
colorscale = [[0, '#4d004c'],[.5, '#f2e5ff'],[1, '#ffffff']]  # 表格中设置3种颜色
#colorscale = [[0, '#4d004c'],[.25,'#0ac37d'],[.5, '#f2e5ff'],[.75,'#afc271'],[1, '#1ff1ff']]  # 5种颜色fig = ff.create_table(tips, colorscale=colorscale)   fig.show()

字体颜色设置

import plotly.figure_factory as ffdata = [['name', 'rank'], ['小明', 1], ['小红', 2], ['小周', 3], ['小张', 4], ['小孙', 5], ['小王', 6]]# 颜色设置
colorscale = [[0, '#272D31'],[.5, '#ff9f9f'],[1, '#ffffff']]# 字体颜色设置
font=['#7CFCFC', '#0FEE00', '#008B00', '#F04F00', '#6A0000', '#CD0000', '#FF3030']fig = ff.create_table(data,  # 添加数据、颜色colorscale=colorscale, font_colors=font)fig.layout.width=500  # 表格整体宽度设置fig.show()

图形和表格联用

采用的消费数据集tips

import plotly.graph_objs as go
import plotly.figure_factory as ff# 添加表格
fig = ff.create_table(tips)# 添加图形
fig.add_trace(go.Scatter(x=tips["tip"],y=tips["total_bill"],marker=dict(color='#9099ff'),  # 标记颜色name="total_bill <br>tip",xaxis='x2', yaxis='y2'
))fig.add_trace(go.Scatter(x=tips["size"],y=tips["total_bill"],marker=dict(color='#a099af'),name="total_bill <br>size",xaxis='x2', yaxis='y2'
))fig.update_layout(title_text="消费数据图表联合",height=500,margin={"t":75,"b":100},xaxis = {'domain': [0, .45]},xaxis2 = {'domain': [0.6, 1.]},yaxis2 = {'anchor': 'x2', 'title': 'tips'})fig.show()

将图形竖直方向上排列:

import plotly.graph_objs as go
import plotly.figure_factory as ff# 添加表格
fig = ff.create_table(tips)# 添加图形
fig.add_trace(go.Scatter(x=tips["tip"],y=tips["total_bill"],marker=dict(color='#9099ff'),  # 标记颜色name="total_bill <br>tip",xaxis='x2', yaxis='y2'
))fig.add_trace(go.Scatter(x=tips["size"],y=tips["total_bill"],marker=dict(color='#a099af'),name="total_bill <br>size",xaxis='x2', yaxis='y2'
))fig.update_layout(title_text="消费数据图表联合",height=800,margin={"t":75,"l":50},yaxis = {'domain': [0, .5]},  # domain 图形占比范围xaxis2 = {'anchor': "y2"},  # anchor表示是和y2一起作为绘图的坐标轴yaxis2 = {'domain': [0.6, 1], 'anchor':'x2', 'title': 'tips'}
)fig.show()

可视化神器Plotly美化表格相关推荐

  1. 可视化神器Plotly玩转多子图绘制

    公众号:尤而小屋 作者:Peter 编辑:Peter 可视化神器Plotly玩转多子图绘制 大家好,我是Peter~ 很长时间没有Plotly绘图的文章,之前已经介绍如何绘制柱状图.饼图.小提琴图.桑 ...

  2. 高级可视化神器Plotly快速入门

    微信公众号:尤而小屋 作者:Peter 编辑:Peter 一文爱上高级可视化神器Plotly 数据可视化已经逐渐发展和深入到我们生活的各个方面,往往遇到数据分析类的工作,借助可视化的方式来呈现我们的数 ...

  3. 酷炫!可视化神器Plotly玩转饼图

    酷炫!可视化神器Plotly玩转饼图 之前发表过两篇关于Plotly的文章: 入门篇:酷炫!36张图爱上高级可视化神器Plotly_Express 散点图:酷炫!可视化神器Plotly玩转散点图 Pl ...

  4. Python 可视化神器--Plotly

    文 | 潮汐 来源:Python 技术「ID: pythonall」 学习Python是做数分析的最基础的一步,数据分析离不开数据可视化.Python第三方库中我们最常用的可视化库是 pandas,m ...

  5. 可视化神器Plotly玩转股票图

    可视化神器Plotly玩转股票图 本文是可视化神器Plotly绘图的第7篇,讲解的是如何通过Plotly来绘制与股市相关的图形,比如基础K线图.OHLC图等. 温馨提示⚠️:**股市有风险,投资需谨慎 ...

  6. 可视化神器Plotly玩转甘特图

    微信公众号:尤而小屋 作者:Peter 编辑:Peter 可视化神器Plotly玩转甘特图 本文介绍的是一种特殊的柱状图:甘特图,虽然在实际工作中使用的几率较小,还是很有必要和兴趣来学习下,将制作过程 ...

  7. 可视化神器Plotly玩转箱形图

    可视化神器Plotly玩转箱形图 在之前的文章中介绍过如何使用Plotly绘制柱状图.饼图.散点图等,都是比较常用的可视化图表呈现方式.本文介绍的是利用Plotly绘制统计图形中的一种:箱型图. 扩展 ...

  8. 再见matplotlib,可视化神器 Plotly 绘制图表的太酷炫了

    数据分析离不开数据可视化.我们最常用的就是pandas,matplotlib,pyecharts 当然还有 Tableau,最近看到一篇文章介绍 plotly 制图后,我感觉写的不够简洁明了. 今天就 ...

  9. 可视化神器Plotly玩转柱状图

    可视化神器Plotly玩转柱状图 本文是可视化神器Plotly绘图的第5篇:重点讲解如何利用Plotly绘制柱状图.柱状图在可视化图中是出现频率非常高的一种图表,能够很直观地展现数据的大小分布情况,在 ...

最新文章

  1. 最短路径算法——Dijkstra and Floyd算法
  2. TextArea的滚动条看不到了,可能与height有关
  3. 深入理解JVM(5) : Java垃圾收集器
  4. 今晚直播 | 清华大学NLP组秦禹嘉:基于自然语言解释的数据增强
  5. SVM原理以及Tensorflow 实现SVM分类(附代码讲了一下原理)
  6. Tickets HDU - 1260
  7. 下面不是mysql特性_下面( )不是MySQL的特性。_学小易找答案
  8. Git 忽略编译后文件
  9. git 提交_GIT提交规范的使用和总结
  10. 教育资源数字化 计算机和通讯,《计算机网络技术课程数字化资源开发研究》.doc...
  11. Linux 命令(125)—— vmstat 命令
  12. gridcontrol值为0时设置为空_汇总:MySQL 8.0 运维便捷命令
  13. docker 代理_Docker点滴:如何配置docker代理
  14. [2077]迷障 sdutOJ
  15. C#毕业设计——基于C#+asp.net+sqlserver的网上书店系统设计与实现(毕业论文+程序源码)——网上书店系统
  16. 最新阿里云国际版支付方式以及注册教程和方法
  17. java丧尸危机全城爆发_伤尸危机-全城爆发BT版
  18. 篱笆家装宝典之六——地板板材
  19. 批量修改视频尺寸,如此操作简单又专业
  20. c++新手入门(不定时更新,已肝18500字)

热门文章

  1. MySQL的ADO控件_力控组态软件后台组件Ado组件的控件方法1
  2. Windows Server 2016 安装步骤
  3. 树莓派+12864液晶视频播放实验
  4. 【资料转发分享】基于8086和LCD12864液晶显示仿真设计、基于8086计算器系统仿真设计、基于8086家具房间灯光控制设计-设计资料
  5. day4.初识python
  6. 6.RabbitMQ系列之direct直连交换器
  7. it计算机知识竞赛主持稿,IT知识竞赛活动策划.doc
  8. Mathematica 训练课(12)常用注释方法
  9. 畅捷通T+和旺店通·企业奇门单据接口对接
  10. druid连接池参数