【问题标题】:Androidplot - background and rangesAndroidplot - 背景和范围
【发布时间】:2013-03-05 05:24:41
【问题描述】:

我是那个图书馆的新手。我正在尝试创建以下情节:

同时我还有下一个:

我的问题:注意:颜色无关紧要

  1. 如何去除黑色区域(范围域和标题上的标签在哪里) 并将情节居中(如第一张图片所示)

  2. 如何像第一张图片一样添加范围? (x:[1-7] y:[0-4500])

  3. 制作与第一张图片相同的网格

我的代码:

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();
}

}

【问题讨论】:

  • 我正在尝试找出您是如何从不完整的网格中删除 x 轴线的。

标签: android androidplot


【解决方案1】:
// 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);  

缺少参数

应该是这样的

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

【讨论】:

    【解决方案2】:

    这适用于新设备:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        plot.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    }
    

    【讨论】:

      【解决方案3】:

      在最新版本中,而不是使用

       mySimpleXYPlot.position(
              mySimpleXYPlot.getGraphWidget(),
              0,
              XLayoutStyle.ABSOLUTE_FROM_LEFT,
              0,
              YLayoutStyle.RELATIVE_TO_CENTER,
              AnchorPosition.LEFT_MIDDLE);
      

      它会被使用:

       mySimpleXYPlot.getGraphWidget().setSize(new SizeMetrics(
                  0, SizeLayoutType.FILL,
                  0, SizeLayoutType.FILL));
      

      这将消除黑色区域。

      【讨论】:

        【解决方案4】:

        我希望这会有所帮助。

        我的代码:

        private XYPlot mySimpleXYPlot;
        
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
        
            super.onCreate(savedInstanceState);
            setContentView(R.layout.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.setBorderStyle(Plot.BorderStyle.NONE, null, null);
            mySimpleXYPlot.setPlotMargins(0, 0, 0, 0);
            mySimpleXYPlot.setPlotPadding(0, 0, 0, 0);
            mySimpleXYPlot.setGridPadding(0, 10, 5, 0);
        
            mySimpleXYPlot.setBackgroundColor(Color.WHITE);
        
            mySimpleXYPlot.position(
                    mySimpleXYPlot.getGraphWidget(),
                    0,
                    XLayoutStyle.ABSOLUTE_FROM_LEFT,
                    0,
                    YLayoutStyle.RELATIVE_TO_CENTER,
                    AnchorPosition.LEFT_MIDDLE);
        
            mySimpleXYPlot.getGraphWidget().getBackgroundPaint().setColor(Color.WHITE);
            mySimpleXYPlot.getGraphWidget().getGridBackgroundPaint().setColor(Color.WHITE);
        
            mySimpleXYPlot.getGraphWidget().getDomainLabelPaint().setColor(Color.BLACK);
            mySimpleXYPlot.getGraphWidget().getRangeLabelPaint().setColor(Color.BLACK);
        
            mySimpleXYPlot.getGraphWidget().getDomainOriginLabelPaint().setColor(Color.BLACK);
            mySimpleXYPlot.getGraphWidget().getDomainOriginLinePaint().setColor(Color.BLACK);
            mySimpleXYPlot.getGraphWidget().getRangeOriginLinePaint().setColor(Color.BLACK);
        
            // Domain
            mySimpleXYPlot.setDomainStep(XYStepMode.INCREMENT_BY_VAL, days.length);     
            mySimpleXYPlot.setDomainValueFormat(new DecimalFormat("0"));
            mySimpleXYPlot.setDomainStepValue(1);
        
            //Range
            mySimpleXYPlot.setRangeBoundaries(0, 4500, BoundaryMode.FIXED);
            mySimpleXYPlot.setRangeStepValue(10);
            //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();
        }
        

        }

        看起来像这样:

        【讨论】:

        • 嘿,我想绘制一个看起来像这样的图表
        • 这是可能的这样的数据:图像/ PNG; BASE64,iVBORw0KGgoAAAANSUhEUgAAA4YAAAJ1CAYAAACFAu4OAAAgAElEQVR4XuydB5gUVdaGv6runhwYGDKKcRXFrKAoSDAhrrImxBww7SqmXVF0 / UUwrQkj6wKmXVExuyoqill0RcwKqEiOQ5g8Pd1V93 / OuVXdNT3dMz2BSX1qF6dnuuqG996q5351zj3HyMvLU + hgx477TU2uR9Rzg061AZiRa2wDMJX + qgYcwwZU9LzkKpGzhIAQaH8E6JlATwB + QDgHPRSU81Cg50DN50ZyfTSg + H8GDKVgchUGLHoCKQXD0HUqRWXTV / Sd4mp1S2zPg8l9Qpn8nKIy9Se6MNlnla4nWmi0zOT6U9dZulXeZ6t7tvuMbXodwO9fX9kcxUgZQkAICAEhIARSnoCR0sKwjuG3DRsmi0C9 + ItoyJSfMgJACHRsAjZsmLVEoZY4UZlT67WRAyWRWNQCzFYGiz3TMGDbNpTSQs406Rnj / O6co0wTsGyYrB6j5fJ5 / FSi51PNJ1OkVY4w1N8maqsuleuP6Z13hL09qinotHi2nRr 跨度>
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-12
        • 1970-01-01
        • 2016-05-17
        • 2021-05-15
        • 1970-01-01
        • 1970-01-01
        • 2018-07-31
        相关资源
        最近更新 更多