快速使用Graphviz实现简单的图论绘制【java辅助文件读取】

简介: 快速使用Graphviz实现简单的图论绘制【java辅助文件读取】

软件安装

下载链接:

点击进入下载

安装方式:查看其他文章即可


使用教程

1、准备一个txt文件,然后转.dot格式

  txt文件内容:


   文件解释:
   定义节点的形状、颜色、字体:node[shape=circle,color=black,fontcolor=black,fontsize=25];  
   定义起点: 1[color= black,fontcolor=black,fontsize=25];
   定义关系: 1->2;(->是有向图)


digraph binaryTree{
    node[shape=circle,color=black,fontcolor=black,fontsize=25];
    1[color= black,fontcolor=black,fontsize=25];
    1->2;
    2->3;
    3->4;
    4->5;
    5->6;
  4->7;
  5->7;
  4->8;
  6->8;
  8->9;
  7->10;
  8->10;
  9->11;
  10->11;
  10->12;
  12->13;
  13->14;
  14->15;
  12->16;
  14->16;
  13->17;
  14->17;
  16->18;
  18->19;
  16->20;
  20->21;
  18->22;
  20->22;
  14->23;
  16->24;
  23->25;
  21->26;
  23->26;
  22->27;
  27->28;
  24->29;
  25->30;
  29->31;
  29->32;
  31->33;
  33->34;
  34->35;
  32->36;
}

b6300479d0f74695a517259c10ab344e.png


2、根据excel快速生成关系

  如下表所示,A列数据为后置节点,B列数据为前置节点

//java代码 读取excel并生成关系文件
package mpcHomework;
//需要引入poi相关的包
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Main {
    public static void main(String[] args) throws Exception {
        File file = new File("E:\\Development\\Paint\\Graphviz\\files\\MPCExperience\\data1.txt");
        String str="";
        FileInputStream fileInputStream = new FileInputStream("E:\\Development\\Paint\\Graphviz\\files\\MPCExperience\\数据表.xlsx");
        Workbook workbook = new XSSFWorkbook(fileInputStream);
        Sheet sheet = workbook.getSheetAt(0);
        for (int i = 0; i < sheet.getLastRowNum()+1; i++) {
            Cell cell1 = sheet.getRow(i).getCell(0);
            cell1.setCellType(Cell.CELL_TYPE_STRING);
            String str1 = cell1.getStringCellValue();
            Cell cell2 = sheet.getRow(i).getCell(1);
            cell2.setCellType(Cell.CELL_TYPE_STRING);
            String str2 = cell2.getStringCellValue();
            if (str2.contains("、")){
                String[] split = str2.split("、");
                for (String s : split) {
                    str+=s+"->"+str1+";\n";
                }
            }else {
                str+=str2+"->"+str1+";\n";
            }
        }
        write(file, str, "GBK");
    }
    public static void write(File f, String text, String charset) throws Exception {
        FileOutputStream fstream = new FileOutputStream(f);
        try {
            fstream.write(text.getBytes(charset));
        } finally {
            fstream.close();
        }
    }
}

3、准备bat文件

  同样是先准备txt文件,然后转换格式为.bat,文件内容如下:

  tree.png:定义输出的图片名字

  tree.dot:定义要读取的dot文件

dot -Tpng -o tree.png tree.dot


77d38bff50c04fbfba0c7293751b5073.png



批处理文件 双击即可生成图片

4、效果展示

be619f3c94a94c47b825685b59fd3940.png

根据关系数据生成的图


目录
相关文章
|
26天前
|
缓存 Java
java文件读取 while ((len = reader.read(buffer)) != -1){}的理解
本文解释了Java中使用`InputStreamReader`和`read(buffer)`方法循环读取文件内容的机制,强调了如何正确理解读取循环和处理读取到的数据,以及如何处理字符编码和换行符。
31 0
|
6月前
|
JavaScript Java 测试技术
基于springboot+vue.js的基于java的教学辅助平台附带文章和源代码设计说明文档ppt
基于springboot+vue.js的基于java的教学辅助平台附带文章和源代码设计说明文档ppt
45 10
|
6月前
|
JavaScript Java 测试技术
基于Java的校园驿站全天候辅助取货管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的校园驿站全天候辅助取货管理系统的设计与实现(源码+lw+部署文档+讲解等)
48 4
|
6月前
|
JavaScript Java 测试技术
基于Java的课程辅助教学网站的设计与实现(源码+lw+部署文档+讲解等)
基于Java的课程辅助教学网站的设计与实现(源码+lw+部署文档+讲解等)
50 0
|
Java 关系型数据库 MySQL
JSP教师辅助办公软件教学进程管理系统yeclipse开发mysql数据库bs框架java编程jdbc
JSP 教师辅助办公软件教学进程管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
63 0
Java:文件io流继承体系文件读取文件写入
Java:文件io流继承体系文件读取文件写入
Java面试:请手写一个文件读取的方法
Java面试:请手写一个文件读取的方法
259 0
|
机器学习/深度学习 存储 Java
二叉树的镜像(剑指offer 27)Java递归(dfs)+辅助栈两种方法实现
二叉树的镜像(剑指offer 27)Java递归(dfs)+辅助栈两种方法实现
112 0
二叉树的镜像(剑指offer 27)Java递归(dfs)+辅助栈两种方法实现