androidPlot черная рамка

Когда я выполняю код ниже и добавляю mySimpleXYPlot.getGraphWidget().getBorderPaint().setColor(Color.WHITE);

приложение вылетает, когда я запускаю его на моем устройстве.

то, что я пытаюсь сделать, это избавиться от черной границы вокруг всего графика. на верхнем, левом и нижнем краях диаграммы он имеет толщину около 2 см. Есть ли способ, которым я могу избавиться от этой черной границы?

public class MainActivity extends Activity {

private XYPlot mySimpleXYPlot;

@Override
public void onCreate(Bundle savedInstanceState)
{

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

 // Create a couple arrays of y-values to plot:
    Number[] days =   { 1  , 2   , 3   , 4   , 5   , 6   , 7 };
    Number[] values = { 380, 1433, 1965, 3200, 3651, 3215, 3217 };

    // initialize our XYPlot reference:
    mySimpleXYPlot = (XYPlot) findViewById(R.id.mySimpleXYPlot);
    mySimpleXYPlot.getBackgroundPaint().setColor(Color.WHITE);
    mySimpleXYPlot.setBorderStyle(XYPlot.BorderStyle.NONE, null, null);
    mySimpleXYPlot.getGraphWidget().getBackgroundPaint().setColor(Color.WHITE);
    mySimpleXYPlot.getGraphWidget().getGridBackgroundPaint().setColor(Color.WHITE);



    // Domain
    mySimpleXYPlot.getGraphWidget().setDomainLabelPaint(null);
    mySimpleXYPlot.getGraphWidget().setDomainOriginLinePaint(null);
    mySimpleXYPlot.setDomainStep(XYStepMode.INCREMENT_BY_VAL, days.length);     
    mySimpleXYPlot.setDomainValueFormat(new DecimalFormat("0"));


    //Range
    mySimpleXYPlot.getGraphWidget().setRangeOriginLinePaint(null);
    mySimpleXYPlot.setRangeStep(XYStepMode.SUBDIVIDE, values.length);
    mySimpleXYPlot.setRangeValueFormat(new DecimalFormat("0"));


    //Remove legend
    mySimpleXYPlot.getLayoutManager().remove(mySimpleXYPlot.getLegendWidget());
    mySimpleXYPlot.getLayoutManager().remove(mySimpleXYPlot.getDomainLabelWidget());
    mySimpleXYPlot.getLayoutManager().remove(mySimpleXYPlot.getRangeLabelWidget());
    mySimpleXYPlot.getLayoutManager().remove(mySimpleXYPlot.getTitleWidget());

    // Turn the above arrays into XYSeries':
    XYSeries series1 = new SimpleXYSeries(
            Arrays.asList(days),          
            Arrays.asList(values), 
            "Series1");                             // Set the display title of the series

    // Create a formatter to use for drawing a series using LineAndPointRenderer:
    LineAndPointFormatter series1Format = new LineAndPointFormatter(
            Color.rgb(0, 200, 0),                   // line color
            Color.rgb(0, 100, 0),                   // point color
            Color.CYAN);                            // fill color 

 // setup our line fill paint to be a slightly transparent gradient:
    Paint lineFill = new Paint();
    lineFill.setAlpha(200);
    lineFill.setShader(new LinearGradient(0, 0, 0, 250, Color.WHITE, Color.GREEN, Shader.TileMode.MIRROR));

    series1Format.setFillPaint(lineFill);

    // add a new series' to the xyplot:
    mySimpleXYPlot.addSeries(series1, series1Format);

    // by default, AndroidPlot displays developer guides to aid in laying out your plot.
    // To get rid of them call disableAllMarkup():
    mySimpleXYPlot.disableAllMarkup();
}

}

3 ответа

Решение

Если вы хотите избавиться от всех цветов за графиком, вам понадобятся следующие три метода. Каждый из которых избавляется от разных частей.

//This gets rid of the gray grid
mySimpleXYPlot.getGraphWidget().getGridBackgroundPaint().setColor(Color.TRANSPARENT);

//This gets rid of the black border (up to the graph) there is no black border around the labels
mysimpleXYPlot.getBackgroundPaint().setColor(Color.TRANSPARENT);

//This gets rid of the black behind the graph
mySimpleXYPlot.getGraphWidget().getBackgroundPaint().setColor(Color.TRANSPARENT);

//With a new release of AndroidPlot you have to also set the border paint
plot.getBorderPaint().setColor(Color.TRANSPARENT);

Надеюсь это поможет.

Границу можно скрыть этим методом:

plot.setBorderPaint(null);
plot.setPlotMargins(0, 0, 0, 0);

Я смог выяснить, как исправить график с этой информацией, но мне пришлось собрать информацию из нескольких из этих постов. Похоже, есть 4 различных фоновых области: * сетка (и метки осей) * область вокруг графика * граница вокруг графика. * поле вокруг границы

  1. Цвет фона для меток сетки и диапазона / домена задается с помощьюplot.getGraphWidget().getBackgroundPaint().setColor(background_color);

  2. Область вокруг сетки может быть установлена:plot.getBackgroundPaint().setColor(background_color);

  3. Это по-прежнему оставляет границу, нарисованную вокруг графика. Вы можете либо избавиться от границы:plot.setBorderPaint(null);

или установить цвет фона

plot.getBorderPaint().setColor(background_color);

  1. Это оставляет поле вокруг всего участка. Это можно удалить с помощью plot.setPlotMargins(0, 0, 0, 0);

Должен быть способ изменить цвет поля вместо того, чтобы просто удалить его, но не потрудился выяснить это.

Другие вопросы по тегам