JFreechart & Servlet: как вычислить точку данных из позиции мыши - PullRequest
0 голосов
/ 23 февраля 2011

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

Я нашел подсказки, как это сделать, используя ChartPanel. Но для обслуживания его напрямую в браузере я использую только экземпляр объекта JFreeChar.

У кого-нибудь есть подсказка или пример, как это сделать?

Спасибо, Дитер

1 Ответ

1 голос
/ 28 февраля 2011

Я думаю, что нашел решение.Для решения мне нужно снова получить график, поэтому мне нужно либо создать его заново, либо как-то его сохранить.Но когда у меня есть ссылка на этот график, решение выглядит следующим образом:


JFreeChart chart = functionWhichRetrievesTheChart();
ChartRenderingInfo info = new ChartRenderingInfo();
// PLOT_SIZE is the size if the graph and has to be the same size as the original drawn chart.createBufferedImage(PLOT_SIZE, PLOT_SIZE, info); 
graph, otherwise the pixel position points to somewhere else
PlotRenderingInfo plotInfo = info.getPlotInfo();


XYPlot plot = (XYPlot)chart.getPlot();
Point p = new Point(x,y); // x and y are the pixel positions

// this is the domain value which belongs to the pixel position x
double domain = plot.getDomainAxis().java2DToValue(p.getX(), plotInfo.getDataArea(), plot.getDomainAxisEdge()); 

// this is the range value which belongs to the pixel position y
double range = plot.getRangeAxis().java2DToValue(p.getY(), plotInfo.getDataArea(), plot.getRangeAxisEdge());
...