文章目录
- 一、语法
- 二、参数
- 三、返回值
- 四、实例
- 4.1 基本表
- 4.2 样式表
- 4.3 使用 Pandas 数据框
- 4.4 Dash中的表
- 4.5 更改行和列大小
- 4.6 交替行颜色
- 4.7 基于变量的行颜色
- 4.8 基于变量的单元格颜色
一、语法
构造一个新的 Table 对象
用于查看详细数据的表格视图。数据以行和列的网格排列。大多数样式可以为列、行或单个单元格指定。表使用列主要顺序,即。网格表示为列向量的向量。
plotly.graph_objects.Table(arg=None,
cells=None,
columnorder=None,
columnordersrc=None,
columnwidth=None,
columnwidthsrc=None,
customdata=None,
customdatasrc=None,
domain=None,
header=None,
hoverinfo=None,
hoverinfosrc=None,
hoverlabel=None,
ids=None,
idssrc=None,
legendgrouptitle=None,
legendrank=None,
meta=None,
metasrc=None,
name=None,
stream=None,
uid=None,
uirevision=None,
visible=None,
**kwargs)
二、参数
-
arg - 与此构造函数或实例兼容的属性字典plotly.graph_objects.Table
-
cells -plotly.graph_objects.table.Cells具有兼容属性的实例或字典
-
columnorder – 指定数据列的呈现顺序;例如,2位置的值0意味着0数据中的列索引将呈现为第三列,因为列的索引基数为零。
-
columnordersrc – 在 Chart Studio Cloud 上为 columnorder.
-
columnwidth – 以比率表示的列的宽度。列按其指定列宽的比例填充可用宽度。
-
columnwidthsrc – 在 Chart Studio Cloud 上为 columnwidth.
-
customdata – 为每个数据分配额外的数据。这在侦听悬停、单击和选择事件时可能很有用。请注意,“分散”跟踪还会在标记 DOM 元素中附加自定义数据项
-
customdatasrc – 在 Chart Studio Cloud 上为 customdata.
-
domain –plotly.graph_objects.table.Domain具有兼容属性的实例或字典
-
header –plotly.graph_objects.table.Header具有兼容属性的实例或字典
-
hoverinfo – 确定在悬停时显示哪些跟踪信息。如果 设置none或skip,则悬停时不显示任何信息。但是,如果none设置,单击和悬停事件仍会触发。
-
hoverinfosrc – 在 Chart Studio Cloud 上为 hoverinfo.
-
hoverlabel –plotly.graph_objects.table.Hoverlabel具有兼容属性的实例或字典
-
ids – 为每个数据分配 id 标签。这些 id 用于动画期间数据点的对象恒定性。应该是字符串数组,而不是数字或任何其他类型。
-
idssrc – 在 Chart Studio Cloud 上为 ids.
-
legendgrouptitle –plotly.graph_objects.table.Legendgrouptitle 具有兼容属性的实例或字典
-
legendrank – 设置此跟踪的图例等级。排名较小的项目和组显示在顶部/左侧,而它们位于底部/右侧。默认的 legendrank 为 1000,因此您可以使用 rank 小于 1000 将某些项目放置在所有未排序的项目之前,而将 rank 大于 1000 放置在所有未排序的项目之后。reversed `legend.traceorder
-
meta - 分配与此跟踪相关的额外元信息,可用于各种文本属性。trace name、graph、axis和colorbar title.text、annotation text rangeselector、 text等属性都updatemenues支持。要访问 同一跟踪中属性中的跟踪值,只需使用 where是相关 项目的索引或键。要访问布局属性中的跟踪,请使用where 是索引或 的键,并且是跟踪索引。sliders labelmetameta%{meta[i]}imetameta%{data[n[.meta[i]}imetan
-
metasrc – 在 Chart Studio Cloud 上为 meta.
-
name – 设置跟踪名称。跟踪名称显示为图例项并悬停。
-
stream -plotly.graph_objects.table.Stream具有兼容属性的实例或字典
-
uid – 为该跟踪分配一个 id,使用它在动画和过渡期间提供跟踪之间的对象恒定性。
-
uirevision - 控制对跟踪的一些用户驱动更改的持久性:constraintrange在parcoords跟踪中,以及一些修改,例如 和。默认为. 请注意,其他用户驱动的跟踪属性更改由属性控制:由 控制, 由控制 ,并且 (可通过 访问)由 控制。跟踪更改由 跟踪,如果没有提供,则仅回退到跟踪索引。因此,如果您的应用程序可以在数组末尾添加/删除跟踪,这样相同的跟踪具有不同的索引,如果您给每个跟踪一个 editable: truenamecolorbar.titlelayout.uirevisionlayouttrace.visiblelayout.legend.uirevisionselectedpointslayout.selectionrevisioncolorbar.(x|y)config: {editable: true}layout.editrevisionuiduiddatauid当它移动时,它会一直伴随着它。
-
visible – 确定此跟踪是否可见。如果“legendonly”,则不绘制迹线,但可以显示为图例项(前提是图例本身可见)。
三、返回值
Table
四、实例
go.Table提供一个 Table 对象用于详细的数据查看。数据以行和列的网格排列。大多数样式可以为标题、列、行或单个单元格指定。表使用列优先顺序,即。网格表示为列向量的向量。
请注意,Dash提供了不同类型的DataTable。
4.1 基本表
import plotly.graph_objects as go
fig = go.Figure(data=[go.Table(header=dict(values=['A Scores', 'B Scores']),
cells=dict(values=[[100, 90, 80, 90], [95, 85, 75, 95]]))
])
fig.show()
4.2 样式表
import plotly.graph_objects as go
fig = go.Figure(data=[go.Table(
header=dict(values=['A Scores', 'B Scores'],
line_color='darkslategray',
fill_color='lightskyblue',
align='left'),
cells=dict(values=[[100, 90, 80, 90], # 1st column
[95, 85, 75, 95]], # 2nd column
line_color='darkslategray',
fill_color='lightcyan',
align='left'))
])
fig.update_layout(width=500, height=300)
fig.show()
4.3 使用 Pandas 数据框
import plotly.graph_objects as go
import pandas as pd
# 'https://raw.githubusercontent.com/plotly/datasets/master/2014_usa_states.csv'
df = pd.read_csv('f:/2014_usa_states.csv')
print(df)
'''
Rank State Postal Population
0 1 Alabama AL 4849377.0
1 2 Alaska AK 736732.0
2 3 Arizona AZ 6731484.0
3 4 Arkansas AR 2966369.0
4 5 California CA 38802500.0
5 6 Colorado CO 5355866.0
6 7 Connecticut CT 3596677.0
7 8 Delaware DE 935614.0
8 9 District of Columbia DC 658893.0
9 10 Florida FL 19893297.0
10 11 Georgia GA 10097343.0
11 12 Hawaii HI 1419561.0
12 13 Idaho ID 1634464.0
13 14 Illinois IL 12880580.0
14 15 Indiana IN 6596855.0
15 16 Iowa IA 3107126.0
16 17 Kansas KS 2904021.0
17 18 Kentucky KY 4413457.0
18 19 Louisiana LA 4649676.0
19 20 Maine ME 1330089.0
20 21 Maryland MD 5976407.0
21 22 Massachusetts MA 6745408.0
22 23 Michigan MI 9909877.0
23 24 Minnesota MN 5457173.0
24 25 Mississippi MS 2994079.0
25 26 Missouri MO 6063589.0
26 27 Montana MT 1023579.0
27 28 Nebraska NE 1881503.0
28 29 Nevada NV 2839098.0
29 30 New Hampshire NH 1326813.0
30 31 New Jersey NJ 8938175.0
31 32 New Mexico NM 2085572.0
32 33 New York NY 19746227.0
33 34 North Carolina NC 9943964.0
34 35 North Dakota ND 739482.0
35 36 Ohio OH 11594163.0
36 37 Oklahoma OK 3878051.0
37 38 Oregon OR 3970239.0
38 39 Pennsylvania PA 12787209.0
39 40 Puerto Rico PR 3548397.0
40 41 Rhode Island RI 1055173.0
41 42 South Carolina SC 4832482.0
42 43 South Dakota SD 853175.0
43 44 Tennessee TN 6549352.0
44 45 Texas TX 26956958.0
45 46 Utah UT 2942902.0
46 47 Vermont VT 626562.0
47 48 Virginia VA 8326289.0
48 49 Washington WA 7061530.0
49 50 West Virginia WV 1850326.0
50 51 Wisconsin WI 5757564.0
51 52 Wyoming WY 584153.0
'''
fig = go.Figure(data=[go.Table(
header=dict(values=list(df.columns),
fill_color='paleturquoise',
align='left'),
cells=dict(values=[df.Rank, df.State, df.Postal, df.Population],
fill_color='lavender',
align='left'))
])
fig.show()
4.4 Dash中的表
import dash
from dash import html, dcc, dash_table
from dash.dependencies import Input, Output
import pandas as pd
data_url = 'https://raw.githubusercontent.com/plotly/datasets/master/2014_usa_states.csv'
df = pd.read_csv('f:/2014_usa_states.csv')
'''
Rank State Postal Population
0 1 Alabama AL 4849377.0
1 2 Alaska AK 736732.0
2 3 Arizona AZ 6731484.0
3 4 Arkansas AR 2966369.0
4 5 California CA 38802500.0
5 6 Colorado CO 5355866.0
6 7 Connecticut CT 3596677.0
7 8 Delaware DE 935614.0
8 9 District of Columbia DC 658893.0
9 10 Florida FL 19893297.0
10 11 Georgia GA 10097343.0
11 12 Hawaii HI 1419561.0
12 13 Idaho ID 1634464.0
13 14 Illinois IL 12880580.0
14 15 Indiana IN 6596855.0
15 16 Iowa IA 3107126.0
16 17 Kansas KS 2904021.0
17 18 Kentucky KY 4413457.0
18 19 Louisiana LA 4649676.0
19 20 Maine ME 1330089.0
20 21 Maryland MD 5976407.0
21 22 Massachusetts MA 6745408.0
22 23 Michigan MI 9909877.0
23 24 Minnesota MN 5457173.0
24 25 Mississippi MS 2994079.0
25 26 Missouri MO 6063589.0
26 27 Montana MT 1023579.0
27 28 Nebraska NE 1881503.0
28 29 Nevada NV 2839098.0
29 30 New Hampshire NH 1326813.0
30 31 New Jersey NJ 8938175.0
31 32 New Mexico NM 2085572.0
32 33 New York NY 19746227.0
33 34 North Carolina NC 9943964.0
34 35 North Dakota ND 739482.0
35 36 Ohio OH 11594163.0
36 37 Oklahoma OK 3878051.0
37 38 Oregon OR 3970239.0
38 39 Pennsylvania PA 12787209.0
39 40 Puerto Rico PR 3548397.0
40 41 Rhode Island RI 1055173.0
41 42 South Carolina SC 4832482.0
42 43 South Dakota SD 853175.0
43 44 Tennessee TN 6549352.0
44 45 Texas TX 26956958.0
45 46 Utah UT 2942902.0
46 47 Vermont VT 626562.0
47 48 Virginia VA 8326289.0
48 49 Washington WA 7061530.0
49 50 West Virginia WV 1850326.0
50 51 Wisconsin WI 5757564.0
51 52 Wyoming WY 584153.0
'''
app = dash.Dash(__name__)
app.layout = html.Div([
dash_table.DataTable(
id='table',
columns=[{"name": i, "id": i}
for i in df.columns],
data=df.to_dict('records'),
style_cell=dict(textAlign='left'),
style_header=dict(backgroundColor="paleturquoise"),
style_data=dict(backgroundColor="lavender")
)
])
app.run_server(debug=True)
4.5 更改行和列大小
import plotly.graph_objects as go
values = [['Salaries', 'Office', 'Merchandise', 'Legal', '<b>TOTAL<br>EXPENSES</b>'], #1st col
["Lorem ipsum dolor sit amet, tollit discere inermis pri ut. Eos ea iusto timeam, an prima laboramus vim. Id usu aeterno adversarium, summo mollis timeam vel ad",
"Lorem ipsum dolor sit amet, tollit discere inermis pri ut. Eos ea iusto timeam, an prima laboramus vim. Id usu aeterno adversarium, summo mollis timeam vel ad",
"Lorem ipsum dolor sit amet, tollit discere inermis pri ut. Eos ea iusto timeam, an prima laboramus vim. Id usu aeterno adversarium, summo mollis timeam vel ad",
"Lorem ipsum dolor sit amet, tollit discere inermis pri ut. Eos ea iusto timeam, an prima laboramus vim. Id usu aeterno adversarium, summo mollis timeam vel ad",
"Lorem ipsum dolor sit amet, tollit discere inermis pri ut. Eos ea iusto timeam, an prima laboramus vim. Id usu aeterno adversarium, summo mollis timeam vel ad"]]
fig = go.Figure(data=[go.Table(
columnorder = [1,2],
columnwidth = [80,400],
header = dict(
values = [['<b>EXPENSES</b><br>as of July 2017'],
['<b>DESCRIPTION</b>']],
line_color='darkslategray',
fill_color='royalblue',
align=['left','center'],
font=dict(color='white', size=12),
height=40
),
cells=dict(
values=values,
line_color='darkslategray',
fill=dict(color=['paleturquoise', 'white']),
align=['left', 'center'],
font_size=12,
height=30)
)
])
fig.show()
4.6 交替行颜色
import plotly.graph_objects as go
headerColor = 'grey'
rowEvenColor = 'lightgrey'
rowOddColor = 'white'
fig = go.Figure(data=[go.Table(
header=dict(
values=['<b>EXPENSES</b>','<b>Q1</b>','<b>Q2</b>','<b>Q3</b>','<b>Q4</b>'],
line_color='darkslategray',
fill_color=headerColor,
align=['left','center'],
font=dict(color='white', size=12)
),
cells=dict(
values=[
['Salaries', 'Office', 'Merchandise', 'Legal', '<b>TOTAL</b>'],
[1200000, 20000, 80000, 2000, 12120000],
[1300000, 20000, 70000, 2000, 130902000],
[1300000, 20000, 120000, 2000, 131222000],
[1400000, 20000, 90000, 2000, 14102000]],
line_color='darkslategray',
# 2-D list of colors for alternating rows
fill_color = [[rowOddColor,rowEvenColor,rowOddColor, rowEvenColor,rowOddColor]*5],
align = ['left', 'center'],
font = dict(color = 'darkslategray', size = 11)
))
])
fig.show()
4.7 基于变量的行颜色
import plotly.graph_objects as go
import pandas as pd
colors = ['rgb(239, 243, 255)', 'rgb(189, 215, 231)', 'rgb(107, 174, 214)',
'rgb(49, 130, 189)', 'rgb(8, 81, 156)']
data = {'Year' : [2010, 2011, 2012, 2013, 2014], 'Color' : colors}
df = pd.DataFrame(data)
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=11)
))
])
fig.show()
4.8 基于变量的单元格颜色
import plotly.graph_objects as go
from plotly.colors import n_colors
import numpy as np
np.random.seed(1)
colors = n_colors('rgb(255, 200, 200)', 'rgb(200, 0, 0)', 9, colortype='rgb')
a = np.random.randint(low=0, high=9, size=10)
b = np.random.randint(low=0, high=9, size=10)
c = np.random.randint(low=0, high=9, size=10)
fig = go.Figure(data=[go.Table(
header=dict(
values=['<b>Column A</b>', '<b>Column B</b>', '<b>Column C</b>'],
line_color='white', fill_color='white',
align='center',font=dict(color='black', size=12)
),
cells=dict(
values=[a, b, c],
line_color=[np.array(colors)[a],np.array(colors)[b], np.array(colors)[c]],
fill_color=[np.array(colors)[a],np.array(colors)[b], np.array(colors)[c]],
align='center', font=dict(color='white', size=11)
))
])
fig.show()