简体   繁体   English

使用JUNG从MySQL检索数据和可视化

[英]Retrieving the data from MySQL and visualization using JUNG

I am trying to retrieve 2 columns from MySQL database. 我正在尝试从MySQL数据库检索2列。 One column is used to create vertexes using Jung. 一栏用于使用Jung创建顶​​点。 In second column i have 2 values. 在第二栏中,我有2个值。 I have to change the vertex size based on the values in the second field. 我必须根据第二个字段中的值更改顶点大小。 the Coding part: 编码部分:

try {

        String query = "select GeneID, GenExpression from gene1 where Disease= 'Hereditery Breast Cancer '";
        PreparedStatement pest = connection.prepareStatement(query);
        ResultSet rs = pest.executeQuery();

        while (rs.next()) {

            name1[i] = rs.getString("GeneID");
            g.addVertex(name1[i]);
            name2[j] = rs.getString("GenExpression");
            System.out.println(name2[j]);

            i++;
            j++;
        }

        rs.close();
        pest.close();

and I was trying with the following code. 我正在尝试以下代码。

ransformer<String, Paint> vertexPaint = new Transformer<String, Paint>() {
        public Paint transform(String i) {
            return Color.red;
        }
    };

    Transformer<String, Shape> vertexSize = new Transformer<String, Shape>() {
        public Shape transform(String x) {
            Ellipse2D circle = new Ellipse2D.Double(-10, -10, 40, 40);
            for (i = 0; i < name2.length; i++) {
                for (j = 0; j < name2.length; j++) {
                    if (name2[j] == "Upregulated") {
                        AffineTransform.getScaleInstance(3, 3)
                                .createTransformedShape(circle);
                    } else {

                        AffineTransform.getScaleInstance(3, 3)
                                .createTransformedShape(circle);
                    }

                }
            }
            return circle;
        }
    };

    // Set up a new stroke Transformer for the edges
    float dash[] = { 10.0f };
    final Stroke edgeStroke = new BasicStroke(1.0f, BasicStroke.CAP_BUTT,
            BasicStroke.JOIN_MITER, 10.0f, dash, 0.0f);
    Transformer<Integer, Stroke> edgeStrokeTransformer = new Transformer<Integer, Stroke>() {
        public Stroke transform(Integer i) {
            return edgeStroke;
        }
    };

    vv.getRenderContext().setVertexFillPaintTransformer(vertexPaint);
    // vv.getRenderContext().setEdgeStrokeTransformer(edgeStrokeTransformer);
    vv.getRenderContext().setEdgeArrowStrokeTransformer(
            edgeStrokeTransformer);

    vv.getRenderContext().setVertexShapeTransformer(vertexSize);
vv.getRenderContext().setVertexLabelTransformer(
            new ToStringLabeller<String>());   

But the size is not changing according to the condition. 但是大小不会根据情况而变化。 Can anyone help me with this? 谁能帮我这个?

Your code has at least two problems: 您的代码至少有两个问题:

(1) you are creating a transformed copy of your shape but you're not using that copy for anything (1)您正在创建形状的变形副本,但没有将该副本用于任何用途

(2) the transformation that you're applying is the same in all cases so there won't be any difference. (2)您要应用的转换在所有情况下都是相同的,因此不会有任何差异。

I don't know whether your data (based on which you're choosing which transformation to perform) are set up correctly, but that's another possible source of error. 我不知道您的数据(基于要选择要执行的转换)是否正确设置,但这是另一个可能的错误来源。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM