stackoverflow.com/questions/44150322/...

я есть этот код для рисования графика, это прекрасно работает. Мне нужны две вещи здесь

на оси домена (х) я хочу иметь возможность прокрутки.На маркерах я вижу жирную жирную линию. Я хочу видеть какой-либо читаемый текст для этого маркера.

Пока я вижу этот вывод

и после увеличения я вижу это

Также на оси домена у меня есть миллис значения. Могу ли я сопоставить его с удобочитаемыми датами?

public class Grapher extends ApplicationFrame {

    public Grapher(final String title, List<PriceModel> priceModels) {

        super(title);
        final XYSeries series = new XYSeries("foo");
        double max = Double.MIN_VALUE, min = Double.MAX_VALUE;
        for (int i = 0; i < priceModels.size(); i++) {
            double price = priceModels.get(i).getPrice();
            if (price < min) {
                min = price;
            }
            if (price > max) {
                max = price;
            }
            series.add((double) priceModels.get(i).getDate(), price);
        }

        final XYSeriesCollection data = new XYSeriesCollection(series);
        final JFreeChart chart = ChartFactory.createXYLineChart(
                "XY Series Demo",
                "X",
                "Y",
                data,
                PlotOrientation.VERTICAL,
                true,
                true,
                false
        );

        for (int i = 0; i < priceModels.size(); i++) {
            if (priceModels.get(i).getAction() != null) {
                Marker marker = new ValueMarker((double) priceModels.get(i).getDate());
                marker.setLabelAnchor(RectangleAnchor.BOTTOM_RIGHT);
                marker.setLabelTextAnchor(TextAnchor.TOP_RIGHT);

                if (priceModels.get(i).getAction() == Types.Action.SELL) {
                    marker.setPaint(Color.green);
                    marker.setLabel("SELL");
                } else {
                    marker.setPaint(Color.red);
                    marker.setLabel("BUY");
                }
                marker.setStroke(new BasicStroke(10.0f));
                chart.getXYPlot().addDomainMarker(marker);
            }
        }
        chart.getXYPlot().setBackgroundPaint(Color.white);
        chart.getXYPlot().getRenderer().setPaint(Color.BLUE);
        chart.getXYPlot().getRangeAxis().setRange(min - 1, max + 1);
        final ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setBackground(Color.WHITE);
        chartPanel.setRangeZoomable(true);
        chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
        setContentPane(chartPanel);
    }

    public static void draw(List<PriceModel> priceModels) {
        final Grapher demo = new Grapher("foo", priceModels);
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос