def plot_chnx_sample(): df = pd.read_csv(DATA_URL + '/fanti.edgelist', sep='\t', header=None, names=['ch1', 'ch2']) df = df.head(100) df.drop_duplicates(keep='first', inplace=True) nodes = [{ "name": ch, "symbolSize": 10 } for ch in set(df['ch1'].unique()) | set(df['ch2'].unique())] links = [{"source": value[0], "target": value[1]} for value in df.values] graph = Graph("汉字-样例关系图", width=1200, height=600) graph.add("", nodes, links, repulsion=80, layout=None, graph_edge_length=150, is_roam=True, is_label_show=True, is_legend_show=True, draggable=False, lineStyle='-.', graph_edge_symbol=['circle', 'arrow']) graph.render() context = dict(myechart=graph.render_embed(), host='/static/js', script_list=graph.get_js_dependencies()) return context
class Mutdraw(): def __init__(self): self.attr = [ "ASD", "SCZ", "BPD", "DD", "DEE", "EE", "ID", "OCD", "TS", "CHD", "control" ] self.v1 = [ 173712, 1038, 69, 8336, 288, 580, 1432, 26, 441, 1900, 51093 ] self.attr2 = ["ASD", "SCZ", "BPD", "ID", "control"] self.v2 = [486, 66, 25, 81, 121] self.attr3 = ["ASD", "SCZ", "BPD", "MDD", "ADHD"] self.v3 = [292, 641, 84, 36, 35] self.pie1 = Pie("DNM", width=500, height=300, title_pos="center", title_top="bottom") self.pie2 = Pie("CNV", width=500, height=300, title_pos="center", title_top="bottom") self.pie1.add("", self.attr, self.v1, legend_pos="left", legend_text_size=8, is_toolbox_show=False) self.pie2.add("", self.attr2, self.v2, legend_pos="left", legend_text_size=8, is_toolbox_show=False) self.nodes = [{"name": "x"}, {"name": "y"}, {"name": "z"}] self.links = [{ "source": "x", "target": "y" }, { "source": "x", "target": "z" }] self.graph = Graph("Graph", "PPI") self.graph.add("Pt", self.nodes, self.links) """ self.grid=Grid() self.grid.add(self.pie1,grid_left="70%") self.grid.add(self.pie2,grid_right="70%") """ def drawPie(self): return self.pie1.render_embed() def drawPie2(self): return self.pie2.render_embed() def drawGraph(self): return self.graph.render_embed()
def get(self, request, *args, **kwargs): from py2neo import Graph as neo4j template_name = 'echart/echart.html' echart = Graph("关系图谱") graph = neo4j('http://192.168.134.4:7474', username='******', password='******') data1 = graph.run( "match(n1:Actor{name:'沈腾'})-[r1]->(m1:Movie) return n1.name,type(r1),m1.name;" ).to_table() data2 = graph.run( "match(n1:Actor{name:'沈腾'})-[r1]->(m1:Movie)<-[r2]-(n2:Actor) return n2.name,type(r2),m1.name;" ).to_table() nodes = [ { "name": "沈腾", "symbolSize": 10, "category": 1 }, ] links = [] for d in data1: nodes.append({"name": d[2], "symbolSize": 20, "category": 0}) links.append({"source": d[0], "target": d[2]}) for d in data2: nodes.append({"name": d[0], "symbolSize": 10, "category": 1}) links.append({"source": d[0], "target": d[2]}) categories = ["电影", "演员"] # print(nodes) # print(links) echart.add("测试", nodes, links, categories=categories, is_label_show=True, is_focusnode=True, is_roam=True, is_rotatelabel=True, graph_repulsion=150) context = dict(myechart=echart.render_embed(), host=REMOTE_HOST, script_list=echart.get_js_dependencies()) return render(request, template_name, context)
def plot_chnx(ch1=None, ch2=None, check_code=None): # df = pd.read_csv(DATA_URL + '/chinese_characters.csv') df = pd.read_csv(DATA_URL + '/fanti.edgelist', sep='\t', header=None, names=['ch1', 'ch2']) df.drop_duplicates(keep='first', inplace=True) if check_code in [1, 5]: df = df.loc[(df['ch1'] == ch1) | (df['ch2'] == ch1)] nodes = [{ "name": ch, "symbolSize": 10, "itemStyle": { "normal": { "color": 'red' } } } for ch in set(df['ch1'].unique()) | set(df['ch2'].unique())] links = [{ "source": value[0], "target": value[1], "lineStyle": { "normal": { "color": 'green' } } } for value in df.values] graph = Graph("汉字-关系图", width=1200, height=600) graph.add("", nodes, links, repulsion=80, layout="force", graph_edge_length=150, is_roam=True, is_label_show=True, is_legend_show=True, draggable=True, lineStyle='-.', graph_edge_symbol=['circle', 'arrow']) graph.render() elif check_code == 4: df = df.loc[(df['ch1'] == ch1) | (df['ch2'] == ch1) | (df['ch1'] == ch2) | (df['ch2'] == ch2)] df1 = df.loc[((df['ch1'] == ch1) & (df['ch2'] != ch2)) | ((df['ch2'] == ch1) & (df['ch1'] != ch2))] df2 = df.loc[((df['ch1'] == ch2) & (df['ch2'] != ch1)) | ((df['ch2'] == ch2) & (df['ch1'] != ch1))] df3 = df.loc[((df['ch1'] == ch1) & (df['ch2'] == ch2)) | ((df['ch2'] == ch1) & (df['ch1'] == ch2))] nodes = [{ "name": ch, "symbolSize": 10, "itemStyle": { "normal": { "color": 'red' } } } for ch in set(df1['ch1'].unique()) | set(df1['ch2'].unique())] nodes += [{ "name": ch, "symbolSize": 10, "itemStyle": { "normal": { "color": 'blue' } } } for ch in set(df2['ch1'].unique()) | set(df2['ch2'].unique())] links = [{ "source": value[0], "target": value[1], "lineStyle": { "normal": { "color": 'PaleTurquoise' } } } for value in df1.values] links += [{ "source": value[0], "target": value[1], "lineStyle": { "normal": { "color": 'gray' } } } for value in df2.values] links += [{ "source": value[0], "target": value[1], "lineStyle": { "normal": { "color": 'Teal' } } } for value in df3.values] graph = Graph("汉字-关系图", width=1200, height=600) graph.add("", nodes, links, repulsion=80, layout="force", graph_edge_length=150, is_roam=True, is_label_show=True, is_legend_show=True, draggable=True, lineStyle='-.', graph_edge_symbol=['circle', 'arrow']) graph.render() elif check_code == 6: df = df.loc[(df['ch1'] == ch2) | (df['ch2'] == ch2)] nodes = [{ "name": ch, "symbolSize": 10, "itemStyle": { "normal": { "color": 'red' } } } for ch in set(df['ch1'].unique()) | set(df['ch2'].unique())] links = [{ "source": value[0], "target": value[1], "lineStyle": { "normal": { "color": 'green' } } } for value in df.values] graph = Graph("汉字-关系图", width=1200, height=600) graph.add("", nodes, links, repulsion=80, layout="force", graph_edge_length=150, is_roam=True, is_label_show=True, is_legend_show=True, draggable=True, lineStyle='-.', graph_edge_symbol=['circle', 'arrow']) graph.render() context = dict(myechart=graph.render_embed(), host='/static/js', script_list=graph.get_js_dependencies()) context.update(network_info(ch1, ch2)) return context
def create_charts(data): page = Page() style = Style(width=900, height=900) html = '' html_before = data['full'][0] html_after = data['full'][1] nodes_full = data['full'][2] links_full = data['full'][3] category=data['full'][4] chart = Graph("全唐诗人关系图", **style.init_style) chart.add("", nodes_full, links_full,category, line_color='#aaa', label_pos="center", is_label_show=True, graph_repulsion=1000, is_legend_show=True, line_curve=0.4, label_text_color="#000", graph_layout='circular', label_emphasis_textcolor='#000') java_script = chart.render_embed() html += html_before + java_script + html_after page.add(chart) # style = Style(width=900, height=600) html_before = data['early'][0] html_after = data['early'][1] nodes_early = data['early'][2] links_early = data['early'][3] chart = Graph("初唐诗人关系图", **style.init_style) chart.add("", nodes_early, links_early, line_color='#aaa', label_pos="center", is_label_show=True, graph_repulsion=1000, is_legend_show=False, line_curve=0.2, label_text_color=None) java_script = chart.render_embed() html += html_before + java_script + html_after page.add(chart) html_before = data['middle'][0] html_after = data['middle'][1] nodes_middle = data['middle'][2] links_middle = data['middle'][3] chart = Graph("中唐诗人关系图", **style.init_style) chart.add("", nodes_middle, links_middle, line_color='#aaa', label_pos="center", is_label_show=True, graph_repulsion=1000, is_legend_show=False, line_curve=0.2, label_text_color=None) java_script = chart.render_embed() html += html_before + java_script + html_after page.add(chart) html_before = data['high'][0] html_after = data['high'][1] nodes_high = data['high'][2] links_high = data['high'][3] chart = Graph("盛唐诗人关系图", **style.init_style) chart.add("", nodes_high, links_high, line_color='#aaa', label_pos="center", is_label_show=True, graph_repulsion=1000, is_legend_show=False, line_curve=0.2, label_text_color=None) java_script = chart.render_embed() html += html_before + java_script + html_after page.add(chart) html_before = data['late'][0] html_after = data['late'][1] nodes_late = data['late'][2] links_late = data['late'][3] chart = Graph("晚唐诗人关系图", **style.init_style) chart.add("", nodes_late, links_late, line_color='#aaa', label_pos="center", is_label_show=True, graph_repulsion=1000, is_legend_show=False, line_curve=0.2, label_text_color=None) java_script = chart.render_embed() html += html_before + java_script + html_after page.add(chart) # 最后 script = page.get_js_dependencies() return html, script