import pandas as pd from d3blocks import D3Blocks d3 = D3Blocks() data = { 'source': ['Alice', 'Alice', 'Bob', 'Charlie', 'Charlie', 'David'], 'target': ['Bob', 'Charlie', 'Alice', 'David', 'Eve', 'Charlie'], 'weight': [1, 2, 1, 3, 1, 2] } df = pd.DataFrame(data) d3.d3graph(df, filepath='/tmp/network_demo.html') ![]() |
from d3blocks import D3Blocks import numpy as np d3 = D3Blocks() df = d3.import_example('mnist') # 示例数据集 # 生成随机参数 size = np.random.randint(0, 8, df.shape[0]) opacity = np.random.randint(0, 8, df.shape[0]) / 10 tooltip = df['y'].values.astype(str) df y cluster_labels PC1 PC2 tsne_1 tsne_2 0 0 0 -23.998256 361.667670 -25.699284 -52.600788 1 1 5 129.010469 -332.193619 -3.978391 -10.591850 2 2 6 112.689047 -158.580078 -11.380729 12.682563 3 3 7 -269.850189 50.496232 2.136889 43.010288 4 4 2 371.270616 69.399040 5.807659 -38.236446 ... ... ... ... ... ... ... 1792 9 7 -234.613707 212.784277 16.879385 36.290092 1793 0 0 99.805264 330.993093 -19.527739 -48.697876 1794 8 6 173.177929 -109.240458 -1.596314 9.206834 1795 9 7 -79.273808 198.656356 15.851237 31.635664 1796 8 6 -6.242530 101.231916 -0.565314 15.440125 d3.scatter( x=df['PC1'].values, y=df['PC2'].values, x1=df['tsne_1'].values, y1=df['tsne_2'].values, color=df['y'].values.astype(str), tooltip=tooltip, size=size, opacity=opacity, cmap='tab20', label_radio=['PCA', 'tSNE'], # 改为列表类型 filepath='/tmp/scatter_demo.html' ) ![]() |
import pandas as pd import matplotlib.pyplot as plt import networkx as nx # 创建示例数据 data = { 'source': ['Alice', 'Alice', 'Bob', 'Charlie', 'Charlie', 'David'], 'target': ['Bob', 'Charlie', 'Alice', 'David', 'Eve', 'Charlie'], 'weight': [1, 2, 1, 3, 1, 2] } df = pd.DataFrame(data) df source target weight 0 Alice Bob 1 1 Alice Charlie 2 2 Bob Alice 1 3 Charlie David 3 4 Charlie Eve 1 5 David Charlie 2 # conda install pygraphviz # 创建有向图对象 G = nx.from_pandas_edgelist(df, 'source', 'target', create_using=nx.DiGraph) # 确定根节点(选择无父节点的节点) roots = [node for node in G.nodes() if G.in_degree(node) == 0] # 设置树形布局(根节点在上层) pos = nx.nx_agraph.graphviz_layout(G, prog='dot', root=roots) # 绘制图形 plt.figure(figsize=(10, 6)) nx.draw(G, pos, with_labels=True, node_size=800, node_color='lightblue', arrows=True, font_size=10, edge_color='gray') plt.title("Static Tree Structure") plt.savefig('static_tree.png', dpi=120, bbox_inches='tight') plt.show() ![]() |
|
|
import pandas as pd from d3blocks import D3Blocks # Initialize d3 = D3Blocks(verbose='info', chart='tree', frame=False) data = { 'source': ['A', 'A', 'B', 'C', 'C', 'D','E','E','H','H'], 'target': ['B', 'C', 'F', 'D', 'E', 'H','I','J','L','M'], 'weight': [100, 100, 2, 3, 3, 4,5,5,6,6] } df = pd.DataFrame(data) # 初始化节点属性 d3.set_node_properties(df) # 遍历所有节点进行统一设置 for node in d3.node_properties: d3.node_properties[node]['size'] = 10 d3.node_properties[node]['color'] = '#1f77b4' d3.node_properties[node]['opacity'] = 0.8 d3.node_properties[node]['edge_color'] = '#333' # Set node properties # d3.set_node_properties(df) node_size = 25 node_name='M' d3.node_properties.get(node_name)['size'] = node_size d3.node_properties.get(node_name)['color'] = '#122178' d3.node_properties.get(node_name)['tooltip'] = 'good:1000,bad:10<br><img src="img_20250401164847.png">' d3.node_properties.get(node_name)['edge_color'] = '#00FFFF' d3.node_properties.get(node_name)['edge_size'] = 5 d3.node_properties.get(node_name)['opacity'] = 0.4 node_name_2='L' d3.node_properties.get(node_name_2)['size'] = node_size d3.node_properties.get(node_name_2)['color'] = '#000000' d3.node_properties.get(node_name_2)['tooltip'] = 'good:1000,bad:10<br><img src="img_20250401164847.png">' d3.node_properties.get(node_name_2)['edge_color'] = '#00FFFF' d3.node_properties.get(node_name_2)['edge_size'] = 5 d3.node_properties.get(node_name_2)['opacity'] = 0.4 node_name_3='F' d3.node_properties.get(node_name_3)['size'] = node_size d3.node_properties.get(node_name_3)['color'] = '#000000' d3.node_properties.get(node_name_3)['tooltip'] = 'good:1000,bad:10<br><img src="img_20250401164847.png">' d3.node_properties.get(node_name_3)['edge_color'] = '#00FFFF' d3.node_properties.get(node_name_3)['edge_size'] = 5 d3.node_properties.get(node_name_3)['opacity'] = 0.4 # Set edge properties d3.set_edge_properties(df) # Show chart d3.show(hierarchy=[1, 2, 3, 4, 5, 6, 7, 8], filepath=r'/tmp/tree.html',showfig=False) ![]() |
|
|
|
|