Search in sources :

Example 1 with ScatterplotDrawingRowVisitor

use of com.google.refine.browsing.facets.ScatterplotDrawingRowVisitor in project OpenRefine by OpenRefine.

the class GetScatterplotCommand method draw.

public void draw(OutputStream output, Project project, Engine engine, PlotterConfig o) throws IOException {
    double min_x = 0;
    double min_y = 0;
    double max_x = 0;
    double max_y = 0;
    int columnIndex_x = 0;
    int columnIndex_y = 0;
    Evaluable eval_x = null;
    Evaluable eval_y = null;
    Color color = new Color(Integer.parseInt(o.color_str, 16));
    Color base_color = o.base_color_str != null ? new Color(Integer.parseInt(o.base_color_str, 16)) : null;
    if (o.columnName_x.length() > 0) {
        Column x_column = project.columnModel.getColumnByName(o.columnName_x);
        if (x_column != null) {
            columnIndex_x = x_column.getCellIndex();
        }
    } else {
        columnIndex_x = -1;
    }
    try {
        eval_x = MetaParser.parse(o.expression_x);
    } catch (ParsingException e) {
        logger.warn("error parsing expression", e);
    }
    if (o.columnName_y.length() > 0) {
        Column y_column = project.columnModel.getColumnByName(o.columnName_y);
        if (y_column != null) {
            columnIndex_y = y_column.getCellIndex();
        }
    } else {
        columnIndex_y = -1;
    }
    try {
        eval_y = MetaParser.parse(o.expression_y);
    } catch (ParsingException e) {
        logger.warn("error parsing expression", e);
    }
    NumericBinIndex index_x = null;
    NumericBinIndex index_y = null;
    Column column_x = project.columnModel.getColumnByName(o.columnName_x);
    if (column_x != null) {
        columnIndex_x = column_x.getCellIndex();
        index_x = ScatterplotFacet.getBinIndex(project, column_x, eval_x, o.expression_x);
        min_x = index_x.getMin();
        max_x = index_x.getMax();
    }
    Column column_y = project.columnModel.getColumnByName(o.columnName_y);
    if (column_y != null) {
        columnIndex_y = column_y.getCellIndex();
        index_y = ScatterplotFacet.getBinIndex(project, column_y, eval_y, o.expression_y);
        min_y = index_y.getMin();
        max_y = index_y.getMax();
    }
    if (index_x != null && index_y != null && index_x.isNumeric() && index_y.isNumeric()) {
        ScatterplotDrawingRowVisitor drawer = new ScatterplotDrawingRowVisitor(columnIndex_x, columnIndex_y, min_x, max_x, min_y, max_y, o.size, o.dim_x, o.dim_y, o.rotation, o.dot, color);
        if (base_color != null) {
            drawer.setColor(base_color);
            FilteredRows filteredRows = engine.getAllRows();
            filteredRows.accept(project, drawer);
            drawer.setColor(color);
        }
        {
            FilteredRows filteredRows = engine.getAllFilteredRows();
            filteredRows.accept(project, drawer);
        }
        ImageIO.write(drawer.getImage(), "png", output);
    } else {
        ImageIO.write(new BufferedImage(1, 1, BufferedImage.TYPE_4BYTE_ABGR), "png", output);
    }
}
Also used : Evaluable(com.google.refine.expr.Evaluable) Column(com.google.refine.model.Column) NumericBinIndex(com.google.refine.browsing.util.NumericBinIndex) Color(java.awt.Color) ParsingException(com.google.refine.expr.ParsingException) ScatterplotDrawingRowVisitor(com.google.refine.browsing.facets.ScatterplotDrawingRowVisitor) FilteredRows(com.google.refine.browsing.FilteredRows) BufferedImage(java.awt.image.BufferedImage)

Example 2 with ScatterplotDrawingRowVisitor

use of com.google.refine.browsing.facets.ScatterplotDrawingRowVisitor in project OpenRefine by OpenRefine.

the class GetScatterplotCommand method draw.

public void draw(OutputStream output, Project project, Engine engine, JSONObject o) throws IOException, JSONException {
    double min_x = 0;
    double min_y = 0;
    double max_x = 0;
    double max_y = 0;
    int columnIndex_x = 0;
    int columnIndex_y = 0;
    Evaluable eval_x = null;
    Evaluable eval_y = null;
    int size = (o.has(ScatterplotFacet.SIZE)) ? o.getInt(ScatterplotFacet.SIZE) : 100;
    double dot = (o.has(ScatterplotFacet.DOT)) ? o.getDouble(ScatterplotFacet.DOT) : 100;
    int dim_x = (o.has(ScatterplotFacet.DIM_X)) ? ScatterplotFacet.getAxisDim(o.getString(ScatterplotFacet.DIM_X)) : ScatterplotFacet.LIN;
    int dim_y = (o.has(ScatterplotFacet.DIM_Y)) ? ScatterplotFacet.getAxisDim(o.getString(ScatterplotFacet.DIM_Y)) : ScatterplotFacet.LIN;
    int rotation = (o.has(ScatterplotFacet.ROTATION)) ? ScatterplotFacet.getRotation(o.getString(ScatterplotFacet.ROTATION)) : ScatterplotFacet.NO_ROTATION;
    String color_str = (o.has(ScatterplotFacet.COLOR)) ? o.getString(ScatterplotFacet.COLOR) : "000000";
    Color color = new Color(Integer.parseInt(color_str, 16));
    String base_color_str = (o.has(ScatterplotFacet.BASE_COLOR)) ? o.getString(ScatterplotFacet.BASE_COLOR) : null;
    Color base_color = base_color_str != null ? new Color(Integer.parseInt(base_color_str, 16)) : null;
    String columnName_x = o.getString(ScatterplotFacet.X_COLUMN_NAME);
    String expression_x = (o.has(ScatterplotFacet.X_EXPRESSION)) ? o.getString(ScatterplotFacet.X_EXPRESSION) : "value";
    if (columnName_x.length() > 0) {
        Column x_column = project.columnModel.getColumnByName(columnName_x);
        if (x_column != null) {
            columnIndex_x = x_column.getCellIndex();
        }
    } else {
        columnIndex_x = -1;
    }
    try {
        eval_x = MetaParser.parse(expression_x);
    } catch (ParsingException e) {
        logger.warn("error parsing expression", e);
    }
    String columnName_y = o.getString(ScatterplotFacet.Y_COLUMN_NAME);
    String expression_y = (o.has(ScatterplotFacet.Y_EXPRESSION)) ? o.getString(ScatterplotFacet.Y_EXPRESSION) : "value";
    if (columnName_y.length() > 0) {
        Column y_column = project.columnModel.getColumnByName(columnName_y);
        if (y_column != null) {
            columnIndex_y = y_column.getCellIndex();
        }
    } else {
        columnIndex_y = -1;
    }
    try {
        eval_y = MetaParser.parse(expression_y);
    } catch (ParsingException e) {
        logger.warn("error parsing expression", e);
    }
    NumericBinIndex index_x = null;
    NumericBinIndex index_y = null;
    String col_x_name = o.getString(ScatterplotFacet.X_COLUMN_NAME);
    Column column_x = project.columnModel.getColumnByName(col_x_name);
    if (column_x != null) {
        columnIndex_x = column_x.getCellIndex();
        index_x = ScatterplotFacet.getBinIndex(project, column_x, eval_x, expression_x);
        min_x = index_x.getMin();
        max_x = index_x.getMax();
    }
    String col_y_name = o.getString(ScatterplotFacet.Y_COLUMN_NAME);
    Column column_y = project.columnModel.getColumnByName(col_y_name);
    if (column_y != null) {
        columnIndex_y = column_y.getCellIndex();
        index_y = ScatterplotFacet.getBinIndex(project, column_y, eval_y, expression_y);
        min_y = index_y.getMin();
        max_y = index_y.getMax();
    }
    if (index_x != null && index_y != null && index_x.isNumeric() && index_y.isNumeric()) {
        ScatterplotDrawingRowVisitor drawer = new ScatterplotDrawingRowVisitor(columnIndex_x, columnIndex_y, min_x, max_x, min_y, max_y, size, dim_x, dim_y, rotation, dot, color);
        if (base_color != null) {
            drawer.setColor(base_color);
            FilteredRows filteredRows = engine.getAllRows();
            filteredRows.accept(project, drawer);
            drawer.setColor(color);
        }
        {
            FilteredRows filteredRows = engine.getAllFilteredRows();
            filteredRows.accept(project, drawer);
        }
        ImageIO.write(drawer.getImage(), "png", output);
    } else {
        ImageIO.write(new BufferedImage(1, 1, BufferedImage.TYPE_4BYTE_ABGR), "png", output);
    }
}
Also used : Evaluable(com.google.refine.expr.Evaluable) Column(com.google.refine.model.Column) NumericBinIndex(com.google.refine.browsing.util.NumericBinIndex) Color(java.awt.Color) ParsingException(com.google.refine.expr.ParsingException) ScatterplotDrawingRowVisitor(com.google.refine.browsing.facets.ScatterplotDrawingRowVisitor) FilteredRows(com.google.refine.browsing.FilteredRows) BufferedImage(java.awt.image.BufferedImage)

Aggregations

FilteredRows (com.google.refine.browsing.FilteredRows)2 ScatterplotDrawingRowVisitor (com.google.refine.browsing.facets.ScatterplotDrawingRowVisitor)2 NumericBinIndex (com.google.refine.browsing.util.NumericBinIndex)2 Evaluable (com.google.refine.expr.Evaluable)2 ParsingException (com.google.refine.expr.ParsingException)2 Column (com.google.refine.model.Column)2 Color (java.awt.Color)2 BufferedImage (java.awt.image.BufferedImage)2