javascript - 如何在类似于 pandas style.bar 的 DataTable 中放置百分比条
问题描述
我有以下 Python 代码来呈现 pandas DataFrame 的 HTML:
TIME_FRAMES = ["24h", "7d", "30d", "200d", "1y"]
# Set CSS properties for th elements in dataframe
th_props = [
('font-size', '11px'),
('text-align', 'center'),
('font-weight', 'bold'),
('color', '#6d6d6d'),
('background-color', '#f7f7f9')
]
# Set CSS properties for td elements in dataframe
td_props = [
('font-size', '11px')
]
# Set table styles
styles = [
dict(selector="th", props=th_props),
dict(selector="td", props=td_props)
]
results = (df.style.bar(subset=TIME_FRAMES, align='zero', color=['#d65f5f', '#5fba7d'])
.set_table_attributes('border="1" class="dataframe table table-hover table-bordered"')
.format({t: "{:,.2f}" for t in TIME_FRAMES})
.format({"Market Cap (Millions)": "{:,.2f}"})
.hide_index()
.set_table_styles(styles))
我从中得到以下信息:
现在我正在尝试将此表转换为 js DataTable 以获得更具交互性和更好看的东西。我flask
只是用来测试。这是我的app.py
:
from flask import Flask, render_template
import pandas as pd
# Initialize the Flask application
app = Flask(__name__)
@app.route('/')
def index():
df= pd.read_pickle("df")
return render_template("index.html",
data=df.to_html(table_id="example",
float_format="%.2f",
na_rep="*",
classes="display cell-border nowrap compact",
border=0,
index=False))
if __name__ == '__main__':
app.run(debug=True)
这是index.html
:
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<link href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" rel="stylesheet">
<link href="https://cdn.datatables.net/buttons/1.5.6/css/buttons.dataTables.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="header">
</div>
{% block content %}
<div>
{{data | safe}}
</div>
{% endblock %}
</div>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js" type="text/javascript"></script>
<script src="https://cdn.datatables.net/buttons/1.5.6/js/dataTables.buttons.min.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js" type="text/javascript"></script>
<script src="https://cdn.datatables.net/buttons/1.5.6/js/buttons.html5.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#example').DataTable( {
dom: 'Blfrtip',
iDisplayLength: 100,
lengthMenu: [[50,100, -1], [50,100, "All"]],
buttons: [
'copyHtml5',
'excelHtml5',
'csvHtml5',
'pdfHtml5'
],
columnDefs: [
{
targets: "_all",
className: 'dt-center'
}
]
} );
} );
</script>
</body>
</html>
由此,我得到这张表:
我现在如何添加类似于直接使用生成 HTML 代码时得到的百分比条df.style.bar()
?我知道 DataTables 有我已经尝试过的插件percentageBars
(https://datatables.net/plug-ins/dataRender/percentageBars )。虽然它不能很好地用于我的特定目的,因为它只是将大于 100% 的所有内容绘制为 100%,并且我希望这些条形彼此成比例,即使我得到的百分比超过 100% df.style.bar()
。此外,percentageBars
不区分正百分比和负百分比,我也需要。
解决方案
推荐阅读
- arrays - 将返回状态附加到bash中的关联数组
- scheme - 如何计算单独代码文件中 if 语句的数量
- php - 使用 php 和 mysql 从表连接中获取数据
- angular - 以反应形式注入输入并使用验证
- powershell - Remove-Item 有时并不总是删除所有内容
- python-3.x - 如何连接python代码和android应用程序
- jquery - 如何增强 JQuery Code 以方便通过上传按钮上传我的文件,然后顺利删除这些文件
- c# - 如何使用 Accord.net C# 提取音频特征
- javascript - 异步文件夹创建有什么意义?
- conv-neural-network - 卷积层可以学习计算输入数据的标准差吗?