如何从Plotly生成的HTML表格中复制数据?
解决Plotly HTML表格无法复制数据的问题
你遇到的问题是因为Plotly默认用SVG渲染表格,SVG里的文本默认不支持选中复制。这里有几个实用的解决办法:
方法1:让表格单元格可选中复制
给表格的cells参数添加editable=True,这样单元格会变成可编辑状态,里面的数值就能直接选中复制了。修改后的代码如下:
import numpy as np import plotly.graph_objs as go fig = go.Figure() fig.add_trace( go.Table( header=dict( values=["<b>Fixed Cost</b>", "<b>Variable Cost</b>", "<b>Start Up Cost</b>", "<b>Shut Down Cost</b>", "<b>Total Cost</b>", "<b>Exports</b>"], font=dict(size=16), align="center", height=40 ), cells=dict( values=[np.random.randint(10, 50, 5), np.random.randint(10, 50, 5), np.random.randint(10, 50, 5), np.random.randint(10, 50, 5), np.random.randint(10, 50, 5), np.random.randint(10, 50, 5), ], align=["center", "center"], font=dict(size=16), height=40, editable=True # 开启可编辑/选中功能 ) ) ) fig.update_layout(font=dict(size=14), autosize=False, width=1000, height=1000) fig.show()
方法2:用模式栏导出CSV数据
Plotly图表右上角默认有个模式栏,里面有个「下载CSV」按钮,点击就能把表格数据导出成CSV文件,打开文件后就能随意复制数据了。如果模式栏没显示,就在fig.show()里加个配置开启:
fig.show(config={'displayModeBar': True})
方法3:手动提取数据
如果只是需要快速获取数据,也可以直接在代码里提取表格数据,打印或者保存成文件:
# 提取表格的单元格数据 table_data = fig.data[0].cells.values # 打印每一行数据 for row in zip(*table_data): print(row) # 或者保存为CSV文件 import csv with open('table_data.csv', 'w', newline='') as f: writer = csv.writer(f) # 写入表头 writer.writerow(["Fixed Cost", "Variable Cost", "Start Up Cost", "Shut Down Cost", "Total Cost", "Exports"]) # 写入数据行 writer.writerows(zip(*table_data))
内容的提问来源于stack exchange,提问作者Vesper




