Colors 如何在JFreeChart中设置我自己的颜色而不放大关节?

Colors 如何在JFreeChart中设置我自己的颜色而不放大关节?,colors,jfreechart,Colors,Jfreechart,我的示例代码如下所示,我想设置我自己的颜色,但它带有放大的关节,如何设置我自己的颜色,而不放大关节 import java.awt.*; import javax.swing.JFrame; import javax.swing.SwingUtilities; import javax.swing.WindowConstants; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.

我的示例代码如下所示,我想设置我自己的颜色,但它带有放大的关节,如何设置我自己的颜色,而不放大关节

import java.awt.*;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.*;
import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;

public class Time_Series_Chart extends JFrame
{
  private static final long serialVersionUID=1L;
  static boolean EXIT_ON_CLOSE_B=true;

  public Time_Series_Chart(String title)
  {
    super(title);
    XYDataset dataset=createDataset();
    JFreeChart chart=ChartFactory.createTimeSeriesChart("Time_Series_Chart",             // Create chart
                                                        "Date",                          // X-Axis Label
//                                                      "Number",                        // Y-Axis Label
                                                        getYLabel("Number"),             // Y-Axis Label
                                                        dataset);
    XYPlot plot=(XYPlot)chart.getPlot();
    plot.setBackgroundPaint(new Color(130,130,130));                                     // Changes background color
/*
    XYLineAndShapeRenderer renderer=new XYLineAndShapeRenderer();
    renderer.setSeriesPaint(0,Color.yellow);
    renderer.setSeriesPaint(1,Color.green);
    renderer.setSeriesPaint(2,new Color(200,20,200));
    
    renderer.setSeriesStroke(0,new BasicStroke(0.5f));
    renderer.setSeriesStroke(1,new BasicStroke(0.5f));
    renderer.setSeriesStroke(2,new BasicStroke(0.5f));
    
    plot.setRenderer(renderer);            // <-- Comes with enlarged joints, not good.
*/
    ChartPanel panel=new ChartPanel(chart);
    setContentPane(panel);
  }

  private XYDataset createDataset()
  {
    TimeSeriesCollection dataset=new TimeSeriesCollection();

    TimeSeries series1=new TimeSeries("Series1");
    series1.add(new Day(1,1,2017),50);
    series1.add(new Day(2,1,2017),40);
    series1.add(new Day(3,1,2017),45);
    series1.add(new Day(4,1,2017),30);
    series1.add(new Day(5,1,2017),350);
    series1.add(new Day(6,1,2017),45);
    series1.add(new Day(7,1,2017),60);
    series1.add(new Day(8,1,2017),45);
    series1.add(new Day(9,1,2017),55);
    series1.add(new Day(10,1,2017),48);
    series1.add(new Day(11,1,2017),60);
    series1.add(new Day(12,1,2017),45);
    series1.add(new Day(13,1,2017),65);
    series1.add(new Day(14,1,2017),45);
    series1.add(new Day(15,1,2017),55);
    dataset.addSeries(series1);

    TimeSeries series2=new TimeSeries("Series2");
    series2.add(new Day(1,1,2017),40);
    series2.add(new Day(2,1,2017),35);
    series2.add(new Day(3,1,2017),26);
    series2.add(new Day(4,1,2017),45);
    series2.add(new Day(5,1,2017),40);
    series2.add(new Day(6,1,2017),35);
    series2.add(new Day(7,1,2017),45);
    series2.add(new Day(8,1,2017),48);
    series2.add(new Day(9,1,2017),31);
    series2.add(new Day(10,1,2017),32);
    series2.add(new Day(11,1,2017),21);
    series2.add(new Day(12,1,2017),35);
    series2.add(new Day(13,1,2017),10);
    series2.add(new Day(14,1,2017),25);
    series2.add(new Day(15,1,2017),15);
    dataset.addSeries(series2);

    return dataset;
  }

  String getYLabel(String Text)
  {
    String Result="";
    
    for (int i=0;i<Text.length();i++) Result+=Text.charAt(i)+(i<Text.length()-1?"\u2009":"");
//    Out(Result);
    return Result;
  }
  
  private static void out(String message) { System.out.print(message); }
  private static void Out(String message) { System.out.println(message); }

  public static void main(String[] args)
  {
    SwingUtilities.invokeLater(() ->
    {
      Time_Series_Chart demo=new Time_Series_Chart("Time_Series_Chart");
      demo.setSize(800,400);
      if (EXIT_ON_CLOSE_B) demo.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
      demo.setLocationRelativeTo(null);
      demo.setVisible(true);
    });
  }
}
import java.awt.*;
导入javax.swing.JFrame;
导入javax.swing.SwingUtilities;
导入javax.swing.WindowConstants;
导入org.jfree.chart.ChartFactory;
导入org.jfree.chart.ChartPanel;
导入org.jfree.chart.JFreeChart;
导入org.jfree.chart.plot.XYPlot;
导入org.jfree.chart.renderer.xy.*;
导入org.jfree.data.time.Day;
导入org.jfree.data.time.TimeSeries;
导入org.jfree.data.time.TimeSeriesCollection;
导入org.jfree.data.xy.XYDataset;
公共类时间序列图扩展JFrame
{
私有静态最终长serialVersionUID=1L;
静态布尔值EXIT_ON_CLOSE_B=true;
公共时间系列图表(字符串标题)
{
超级(标题);
XYDataset数据集=createDataset();
JFreeChart chart=ChartFactory.createTimeSeriesChart(“时间序列图表”,//创建图表
“日期”//X轴标签
//“编号”//Y轴标签
getYLabel(“编号”),//Y轴标签
数据集);
XYPlot=(XYPlot)chart.getPlot();
plot.setBackgroundPaint(新颜色(130130));//更改背景色
/*
XylineandShaperEnder渲染器=新的XylineandShaperEnder();
渲染器.setSeriesPaint(0,颜色.黄色);
渲染器.setSeriesPaint(1,Color.green);
渲染器.setSeriesPaint(2,新颜色(200,20200));
渲染器设置经验行程(0,新基本行程(0.5f));
渲染器。设置经验行程(1,新基本行程(0.5f));
渲染器。设置经验行程(2,新基本行程(0.5f));
plot.setRenderer(renderer);//我找到了答案:

renderer.setSeriesShapesVisible(0,false);
renderer.setSeriesShapesVisible(1,false);
一些备选方案:

  • 获取对所选图表工厂现有渲染器的引用,并显式调用
    setDefaultShapesVisible(false)

    XYPlot plot=(XYPlot)chart.getPlot();
    …
    XYLineAndShapeRenderer r = (XYLineAndShapeRenderer) plot.getRenderer();
    r.setDefaultShapesVisible(false);
    r.set…
    
  • 创建自己的工厂,如图所示,使用作为指导。请注意,工厂已指定线条应可见,但形状不可见

    XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(true, false);
    

如图所示,使用
setSeriesVisible()
可以很好地控制各个系列的可见性。