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()
可以很好地控制各个系列的可见性。