小编bob*_*bby的帖子

如何在C#应用程序中集成d3.js图表​​?

我是Mike Bostock的d3.js图表​​库的忠实粉丝:d3js.org.

我想用它在C#.Net应用程序中显示图表,但我不知道是否可能.

可以通过生成HTM + JS代码并在webbrowser窗口中呈现它来实现.但是,我理解d3.js库不能在没有网络服务器的情况下在本地使用(但是我不明白没有网络服务器什么有用,什么需要网络服务器),因此一个简单的解决方案不起作用.

有没有人试图开发d3.js图表​​的那种部署?您是否知道如何开始以获得最简单的解决方案?

.net c# d3.js

30
推荐指数
2
解决办法
2万
查看次数

如何通过代码使用 Python Alembic 运行迁移?

我正在尝试使用 sqlAlchemy 和 Alembic 迁移 SQL 数据库。我想直接在 Python 代码中制作简单的迁移脚本,而不是使用 Alembic CLI,如文档中所述。

我只在这个主题上找到了这个 SO 问题:Using Alembic API from inside application code

使用这个问题 + Flask-Alembic 源代码,我尝试了这些简单的命令。引擎链接到我的数据库,元数据包含迁移信息。

我认为我非常接近,解决方案应该在一行代码中......我很挣扎。

from alembic.config import Config
from alembic import command, autogenerate
from alembic.script import ScriptDirectory
from alembic.runtime.environment import EnvironmentContext

alembic_cfg = Config()
alembic_cfg.set_main_option("script_location", "migrations")
alembic_cfg.set_main_option("url", "postgresql://user:pass@postgres:5432/mydb")

alembic_script = ScriptDirectory.from_config(alembic_cfg)
alembic_env = EnvironmentContext(alembic_cfg, alembic_script)

conn = engine.connect()
alembic_env.configure(connection=conn, target_metadata=metadata)
alembic_context = alembic_env.get_context()
Run Code Online (Sandbox Code Playgroud)

我能够使用以下命令来查看它是否有效并检测哪些字段必须迁移:

autogenerate.compare_metadata(alembic_context, metadata)
autogenerate.produce_migrations(alembic_context, metadata)
Run Code Online (Sandbox Code Playgroud)

但是,我无法运行迁移。我尝试了几个命令,但总是出现错误...

例如,如果我运行:

with alembic_env.begin_transaction():
    alembic_env.run_migrations()
Run Code Online (Sandbox Code Playgroud)

我得到:

/usr/local/lib/python2.7/site-packages/alembic/runtime/migration.pyc in run_migrations(self, **kw) …
Run Code Online (Sandbox Code Playgroud)

python orm sqlalchemy alembic

6
推荐指数
1
解决办法
5044
查看次数

d3使用循环嵌套在几个键上

我正在使用d3.nest()来从CSV文件创建分层对象.

你能帮我理解为什么以下代码不起作用.我没有设法在循环中使用嵌套函数,如下所述.

我有以下CSV文件,取自d3网站上的示例:

"type1","type2","type3","type4","type5","size"
"flare","analytics","cluster","AgglomerativeCluster","","3938"
"flare","analytics","cluster","CommunityStructure","","3812"
"flare","analytics","cluster","MergeEdge","","743"
"flare","analytics","graph","BetweennessCentrality","","3534"
"flare","analytics","graph","LinkDistance","","5731"
Run Code Online (Sandbox Code Playgroud)

这个基本的嵌套工作原理:

data = data.entries(csv)
        .key(function(d) {return d.type1; })
        .key(function(d) {return d.type2; })
        .key(function(d) {return d.type3; })
        .entries(csv);
Run Code Online (Sandbox Code Playgroud)

我想使用一个值数组来指定我的键,以便动态地修改它们.

这有效:

    var data = d3.nest();
    var nesting = ["type1","type2","type3"];
    data = data.key(function(d) {return d[nesting[0]]; });
    data = data.key(function(d) {return d[nesting[1]]; });
    data = data.key(function(d) {return d[nesting[2]]; });
    data = data.entries(csv);
Run Code Online (Sandbox Code Playgroud)

但它不适用于循环......

    var data = d3.nest();
    for(var i=0;i<nesting.length;i++)
    {
        data = data.key(function(d) {return d[nesting[i]]; });
    }
    data = data.entries(csv);
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么循环版本不起作用...也许我想念d3.nest()功能...

此外,我想知道是否有一种方法可以"跳过"嵌套级别,如果此级别没有任何内容填充(即:上面提取的所有行中的"type5"级别).我怎么能这样做?

非常感谢阅读!

javascript csv svg nested d3.js

4
推荐指数
1
解决办法
7246
查看次数

标签 统计

d3.js ×2

.net ×1

alembic ×1

c# ×1

csv ×1

javascript ×1

nested ×1

orm ×1

python ×1

sqlalchemy ×1

svg ×1