Я использую JFreeChart XYPLot для построения набора XYData с разными метками. Я создал разные объекты XYSeries для разных меток, чтобы иметь разные цвета для разных меток. Теперь мне нужно потребовать изменения форм конкретных точек (тестовых данных) в каждом XYDataSeries, как показано ниже . В приведенном выше графике есть два разных XYSeries с синим и красным цветом. Из этих двух мне нужно изменить формы некоторых точек (тестовые данные) на X вместо круга. Возможно ли это в JFreeChart. This post объяснить, как сделать это для всего набора данных, но я хочу изменить только определенные точкиИзменение формы одной точки в JFreeChart XYPLot
Ниже приведен код, который я написал до сих пор
public static Map<String, XYSeries> createXYSeries(Data[] dataSet){
Map<String,XYSeries> xySeries = new HashMap<String, XYSeries>();
for(Data data : dataSet){
if(xySeries.get(data.actualLabel) == null){
xySeries.put(data.actualLabel, new XYSeries(data.actualLabel));
}
xySeries.get(data.actualLabel).add(data.dimensionValues[0],data.dimensionValues[1]);
}
return xySeries;
}
public XYDataset createXYSeriesCollection(Map<String, XYSeries> plottingDataSet) {
XYSeriesCollection xySeriesCollection = new XYSeriesCollection();
for (String key : plottingDataSet.keySet()) {
xySeriesCollection.addSeries(plottingDataSet.get(key));
}
return xySeriesCollection;
}
private ChartPanel createPlottingPanel(String title,
Map<String, XYSeries> plottingDataSet) {
JFreeChart jfreechart = ChartFactory.createScatterPlot(title, "X", "Y",
createSampleData(plottingDataSet), PlotOrientation.VERTICAL,
true, true, false);
XYPlot xyPlot = (XYPlot) jfreechart.getPlot();
xyPlot.setDomainCrosshairVisible(true);
xyPlot.setRangeCrosshairVisible(true);
xyPlot.setBackgroundPaint(Color.white);
return new ChartPanel(jfreechart);
}
Примечание: Я пытаюсь построить результаты KNearestNeighbors . (Круги для данных поезда и Х для данных испытаний)
Большое спасибо за ответ. Я хотел бы знать, есть ли способ изменить форму самого XYSeries, то есть установить другую форму для каждого XYSeries, вместо того, чтобы проверять каждую точку, к которой принадлежит XYSeries, а затем изменять форму. – Abhilash
«XYSeries» в вашем наборе данных включает модель; рендерингом является вид. В представлении должна содержаться ссылка на модель, с помощью которой можно запросить модель для информации, необходимой ей для определения формы для рендеринга. – trashgod
Это пересеченные пунктирные линии, нарисованные на графике, используя эти две строки кода xyPlot.setDomainCrosshairVisible (true); xyPlot.setRangeCrosshairVisible (true); меняется, я имею в виду, как я могу заблокировать его на 0,0 координаты независимо от щелчка мыши? – JAVA