gpt4 book ai didi

java - 在Jfreechart中更改图形的X轴起始值

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:21:35 24 4
gpt4 key购买 nike

我正在计算图像红色分量的直方图并将其存储在 redhisto[] 中。数组的索引代表强度(0到255)该值表示具有该强度的像素数。然后使用 JFreeChart 绘制这些值。

我的问题是:

  1. 如何让X轴的值从0开始,现在是从负数开始。
  2. 我们可以更改图中条形的颜色吗 Output Graph obtained代码是:

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

最佳答案

您可以更改域轴的下限并设置系列绘制,如下所示。默认的 XYBarPainter 具有渐变色突出显示,因此我使用了 StandardXYBarPainter

image

XYPlot plot = (XYPlot) chart.getPlot();
ValueAxis axis = plot.getDomainAxis();
axis.setLowerBound(0);
XYBarRenderer r = (XYBarRenderer) plot.getRenderer();
r.setBarPainter(new StandardXYBarPainter());
r.setSeriesPaint(0, Color.blue);

关于java - 在Jfreechart中更改图形的X轴起始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21072958/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com