Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正在寻找用Java绘制组织结构图的库_Java_Pdf_Graph - Fatal编程技术网

正在寻找用Java绘制组织结构图的库

正在寻找用Java绘制组织结构图的库,java,pdf,graph,Java,Pdf,Graph,我有一个表示组织结构图的树结构,我需要以PDF格式输出树。我看过Prefuse、JFreeChart、yFiles和JGraph,但它们似乎都要求我编写一些逻辑。以前有人这样做过吗?有谁能推荐一个好的图书馆使用吗?试试AT&T的Graphviz 不确定“逻辑”是什么意思,但你必须在某个地方提供有关层次结构中父母和子女的数据。试试AT&T的Graphviz 不确定“逻辑”是什么意思,但您必须在某个地方提供层次结构中有关父级和子级的数据。您可以使用Jfree图表生成图形/树。我用过JFree聊天,很

我有一个表示组织结构图的树结构,我需要以PDF格式输出树。我看过Prefuse、JFreeChart、yFiles和JGraph,但它们似乎都要求我编写一些逻辑。以前有人这样做过吗?有谁能推荐一个好的图书馆使用吗?

试试AT&T的Graphviz

不确定“逻辑”是什么意思,但你必须在某个地方提供有关层次结构中父母和子女的数据。

试试AT&T的Graphviz


不确定“逻辑”是什么意思,但您必须在某个地方提供层次结构中有关父级和子级的数据。

您可以使用Jfree图表生成图形/树。我用过JFree聊天,很简单。你必须把数据放在2D数组中,然后把它传递给方法

/**
 * A simple demonstration application showing how to create a bar chart.
 * http://opengeekz.com
 */
public class CreateBarChart  {

       String aFileName="image1.jpg";
       int width=250;
       int height=200;
       double quality=100;
       JFreeChart chart=null;

/**
 * Create bar chart for given data
 * @param aFileName file name of image.
 * @param width Width of image.
 * @param height Height of image.
 * @param quality Quality of image file .
 */
   public CreateBarChart(String aFileName,int width,int height,double quality)
   {
       this.aFileName=aFileName;
        this.width=width;
       this.height=height;
       this.quality=quality;
   }
   public CreateBarChart()
   {

   }

   /**
    * Accept 2D array for graph row denotes x axis,column denotes y axis.
    * @param barchartdata 2D array for x axis, and y axis.
    * @return CategoryDataset
    */

    private static CategoryDataset createDataset(String barchartdata[][]) {

        // row keys...
        String series1 = "";
        // column keys...

        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        for(int i=barchartdata.length-1;i>=0;i--)
        {
            if(barchartdata[i][0]==null)
            {
                break;
            }
            else
            {
                String value_str=barchartdata[i][0];
                value_str=value_str.replaceAll("#","");
                float value=0;
                value=Integer.parseInt(value_str);
                dataset.addValue(value, series1,barchartdata[i][1]);
            }

        }
        // create the dataset...
        return dataset;

    }
/**
 *
 * @param barchartdata 2D array for x axis, and y axis.
 * @return JFreeChart object for data.
 */
    public  JFreeChart createChart(String barchartdata[][]) {
        CategoryDataset dataset = createDataset(barchartdata);
        chart = ChartFactory.createBarChart3D(
            "",         // chart title
            "",               // domain axis label
            "",                  // range axis label
            dataset,                  // data
            PlotOrientation.VERTICAL, // orientation
            false,                     // include legend
            false,                     // tooltips?
            false                     // URLs?
        );

        // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...

        // set the background color for the chart...
        chart.setBackgroundPaint(Color.white);
        chart.setPadding(RectangleInsets.ZERO_INSETS);
        // get a reference to the plot for further customisation...
        CategoryPlot plot = chart.getCategoryPlot();
        plot.setBackgroundPaint(Color.WHITE);
        plot.setDomainGridlinePaint(Color.white);
        plot.setDomainGridlinesVisible(true);
        plot.setRangeGridlinePaint(Color.white);
        plot.getDomainAxis().setCategoryMargin(0.0f);

        // set the range axis to display integers only...
        final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

        // disable bar outlines...
        BarRenderer renderer = (BarRenderer) plot.getRenderer();
        renderer.setDrawBarOutline(true);


        // set up gradient paints for series...
        GradientPaint gp0 = new GradientPaint(
            0.0f, 0.0f,new Color(0,118,112),
            100.0f,100.0f,new Color(0,118,112)
        );

        renderer.setSeriesPaint(0, gp0);

        CategoryAxis domainAxis = plot.getDomainAxis();
        domainAxis.setCategoryLabelPositions(
        CategoryLabelPositions.createUpRotationLabelPositions(Math.PI /5.0)
        );
        // OPTIONAL CUSTOMISATION COMPLETED.
        try{
        saveToFile(chart, aFileName);
        }catch(Exception ex){ex.printStackTrace();}
        return chart;


    }
/**
 * Save generated chart in jpg file.
 * @param chart Object of JFreeChart class
 * @param aFileName file name where jpg image to be saved.
 * @throws FileNotFoundException
 * @throws IOException
 */
     private  void saveToFile(JFreeChart chart,String aFileName)throws FileNotFoundException, IOException
    {
    BufferedImage img = draw(chart,width,height);
    FileOutputStream fos = new FileOutputStream(aFileName);
    JPEGImageEncoder encoder2 =JPEGCodec.createJPEGEncoder(fos);
    JPEGEncodeParam param2 = encoder2.getDefaultJPEGEncodeParam(img);
    param2.setQuality((float) quality, true);
    encoder2.encode(img,param2);
    fos.close();
    } // saveToFile

     /**
      * Draw bar chat for JFreeChart object
      * @param chart JFreeChart Object
      * @param width Width of image
      * @param height Height of Image
      * @return Object of Buffered Image class
      */
    private static BufferedImage draw(JFreeChart chart, int width, int height)
    {
    BufferedImage img =
    new BufferedImage(width , height,
    BufferedImage.TYPE_INT_RGB);
    Graphics2D g2 = img.createGraphics();
    try{
    chart.draw(g2, new Rectangle2D.Double(0, 0, width, height));
    g2.dispose();
    }catch(Exception ex){ex.printStackTrace();}
    return img;
    } // end draw

/**
 *
 * @param args
 * @throws FileNotFoundException
 * @throws IOException
 */
    public static void main(String[] args) throws FileNotFoundException, IOException {

        CreateBarChart demo = new CreateBarChart("f:/image.jpg",250,300,100);
        String data[][]=new String[2][2];
        data[0][0]="30";
        data[0][1]="jan";
        data[1][0]="20";
        data[1][1]="feb";
        demo.createChart(data);
        demo.saveToFile(demo.chart,"iamge.jpg");

    }

}
这是Jfree图表的一个简单示例。
您可以使用生成Pdf。

您可以使用Jfree图表生成图形/树。我用过JFree聊天,很简单。你必须把数据放在2D数组中,然后把它传递给方法

/**
 * A simple demonstration application showing how to create a bar chart.
 * http://opengeekz.com
 */
public class CreateBarChart  {

       String aFileName="image1.jpg";
       int width=250;
       int height=200;
       double quality=100;
       JFreeChart chart=null;

/**
 * Create bar chart for given data
 * @param aFileName file name of image.
 * @param width Width of image.
 * @param height Height of image.
 * @param quality Quality of image file .
 */
   public CreateBarChart(String aFileName,int width,int height,double quality)
   {
       this.aFileName=aFileName;
        this.width=width;
       this.height=height;
       this.quality=quality;
   }
   public CreateBarChart()
   {

   }

   /**
    * Accept 2D array for graph row denotes x axis,column denotes y axis.
    * @param barchartdata 2D array for x axis, and y axis.
    * @return CategoryDataset
    */

    private static CategoryDataset createDataset(String barchartdata[][]) {

        // row keys...
        String series1 = "";
        // column keys...

        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        for(int i=barchartdata.length-1;i>=0;i--)
        {
            if(barchartdata[i][0]==null)
            {
                break;
            }
            else
            {
                String value_str=barchartdata[i][0];
                value_str=value_str.replaceAll("#","");
                float value=0;
                value=Integer.parseInt(value_str);
                dataset.addValue(value, series1,barchartdata[i][1]);
            }

        }
        // create the dataset...
        return dataset;

    }
/**
 *
 * @param barchartdata 2D array for x axis, and y axis.
 * @return JFreeChart object for data.
 */
    public  JFreeChart createChart(String barchartdata[][]) {
        CategoryDataset dataset = createDataset(barchartdata);
        chart = ChartFactory.createBarChart3D(
            "",         // chart title
            "",               // domain axis label
            "",                  // range axis label
            dataset,                  // data
            PlotOrientation.VERTICAL, // orientation
            false,                     // include legend
            false,                     // tooltips?
            false                     // URLs?
        );

        // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...

        // set the background color for the chart...
        chart.setBackgroundPaint(Color.white);
        chart.setPadding(RectangleInsets.ZERO_INSETS);
        // get a reference to the plot for further customisation...
        CategoryPlot plot = chart.getCategoryPlot();
        plot.setBackgroundPaint(Color.WHITE);
        plot.setDomainGridlinePaint(Color.white);
        plot.setDomainGridlinesVisible(true);
        plot.setRangeGridlinePaint(Color.white);
        plot.getDomainAxis().setCategoryMargin(0.0f);

        // set the range axis to display integers only...
        final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

        // disable bar outlines...
        BarRenderer renderer = (BarRenderer) plot.getRenderer();
        renderer.setDrawBarOutline(true);


        // set up gradient paints for series...
        GradientPaint gp0 = new GradientPaint(
            0.0f, 0.0f,new Color(0,118,112),
            100.0f,100.0f,new Color(0,118,112)
        );

        renderer.setSeriesPaint(0, gp0);

        CategoryAxis domainAxis = plot.getDomainAxis();
        domainAxis.setCategoryLabelPositions(
        CategoryLabelPositions.createUpRotationLabelPositions(Math.PI /5.0)
        );
        // OPTIONAL CUSTOMISATION COMPLETED.
        try{
        saveToFile(chart, aFileName);
        }catch(Exception ex){ex.printStackTrace();}
        return chart;


    }
/**
 * Save generated chart in jpg file.
 * @param chart Object of JFreeChart class
 * @param aFileName file name where jpg image to be saved.
 * @throws FileNotFoundException
 * @throws IOException
 */
     private  void saveToFile(JFreeChart chart,String aFileName)throws FileNotFoundException, IOException
    {
    BufferedImage img = draw(chart,width,height);
    FileOutputStream fos = new FileOutputStream(aFileName);
    JPEGImageEncoder encoder2 =JPEGCodec.createJPEGEncoder(fos);
    JPEGEncodeParam param2 = encoder2.getDefaultJPEGEncodeParam(img);
    param2.setQuality((float) quality, true);
    encoder2.encode(img,param2);
    fos.close();
    } // saveToFile

     /**
      * Draw bar chat for JFreeChart object
      * @param chart JFreeChart Object
      * @param width Width of image
      * @param height Height of Image
      * @return Object of Buffered Image class
      */
    private static BufferedImage draw(JFreeChart chart, int width, int height)
    {
    BufferedImage img =
    new BufferedImage(width , height,
    BufferedImage.TYPE_INT_RGB);
    Graphics2D g2 = img.createGraphics();
    try{
    chart.draw(g2, new Rectangle2D.Double(0, 0, width, height));
    g2.dispose();
    }catch(Exception ex){ex.printStackTrace();}
    return img;
    } // end draw

/**
 *
 * @param args
 * @throws FileNotFoundException
 * @throws IOException
 */
    public static void main(String[] args) throws FileNotFoundException, IOException {

        CreateBarChart demo = new CreateBarChart("f:/image.jpg",250,300,100);
        String data[][]=new String[2][2];
        data[0][0]="30";
        data[0][1]="jan";
        data[1][0]="20";
        data[1][1]="feb";
        demo.createChart(data);
        demo.saveToFile(demo.chart,"iamge.jpg");

    }

}
这是Jfree图表的一个简单示例。
您可以使用生成Pdf。

我的意思是,我不想计算图表中给定行中可以容纳多少个节点。我想使用一个足够聪明的库来进行布局。我有所有的组织结构图数据。Graphviz就是这样-它为你做布局。我不确定你是否会对结果如此满意,因为我所看到的看起来不像是一个经典的组织结构图,但它内置了智能。我的意思是,我不想计算在我的图表中给定的行中可以容纳多少节点。我想使用一个足够聪明的库来进行布局。我有所有的组织结构图数据。Graphviz就是这样-它为你做布局。我不确定你是否会对结果如此满意,因为我所看到的看起来不像是一个经典的组织结构图,但它内置了智能。谢谢prakash。我会尝试一下,让你们知道它是否适合我。这是一个条形图的例子,用户要求提供组织结构图。两者都是不同的汉克斯·普拉卡什。我会尝试一下,让你们知道它是否适合我。这是一个条形图的例子,用户要求提供组织结构图。两者都不同