Я вычисляю гистограмму красной составляющей изображения и сохраняю ее в redhisto []. Индекс массива представляет интенсивность (от 0 до 255) , а значение представляет количество пикселей с этой интенсивностью. Затем построим эти значения с помощью JFreeChart.Чтобы изменить начальное значение графика оси X в Jfreechart
Мой вопрос:
- Как сделать начальное значение оси Х от 0. Теперь его исходя из отрицательного числа.
Можем ли мы изменить цвет баров на графике код является:
public class Histogram extends ApplicationFrame { public Histogram(final String title) throws IOException { super(title); IntervalXYDataset dataset = createDataset(); JFreeChart chart = createChart(dataset); final ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); setContentPane(chartPanel); } private IntervalXYDataset createDataset() throws IOException { BufferedImage imageA = ImageIO.read(new File("XYZ.bmp")); int[] red = new int[imageA.getHeight()*imageA.getWidth()]; int[] redhisto = new int[256]; int[] pixel; int k= 0; for (int y = 0; y < imageA.getHeight(); y++) { for (int x = 0; x < imageA.getWidth(); x++) { pixel = imageA.getRaster().getPixel(x, y, new int[3]); red[k] = pixel[0]; k++; } } for(int x=0;x<red.length;x++){ int y = red[x]; redhisto[y]++; } final XYSeries series = new XYSeries("No of pixels"); for(int i=0; i<redhisto.length;i++) series.add(i,redhisto[i]); final XYSeriesCollection dataset = new XYSeriesCollection(series); return dataset; } private JFreeChart createChart(IntervalXYDataset dataset) { final JFreeChart chart = ChartFactory.createXYBarChart("Color Intensity Histogram","X",false,"Y",dataset,PlotOrientation.VERTICAL,true,true,false); XYPlot plot = (XYPlot) chart.getPlot(); return chart; } public static void main(final String[] args) throws IOException { final Histogram demo = new Histogram("Image Histogram"); demo.pack(); RefineryUtilities.centerFrameOnScreen(demo); demo.setVisible(true); } }