Я использую createLineChart
для создания графика.Это выглядит как любой линейный график.
Я хотел бы применить XYSplineRenderer
, чтобы линии были изогнуты.Возможно ли это?
Вот код.Это просто CreateLineChart
, поэтому мне было интересно, возможно ли применить этот рендерер, поскольку одно из значений - String
и представляет собой диапазон значений.
![image](https://i.stack.imgur.com/YD225.png)
public class Intento1 extends JFrame {
JFreeChart Grafica;
JFreeChart Grafica2;
JFreeChart Grafica3;
DefaultCategoryDataset Datos = new DefaultCategoryDataset();
DefaultCategoryDataset Datos2 = new DefaultCategoryDataset();
//XYDataset Datos2 = new XYDataset();
//XYSplineRenderer render = new XYSplineRenderer();
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Intento1 frame = new Intento1();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Intento1() {
Datos.addValue(1, "Frecuencia", "Menos de 46");
Datos.addValue(1, "Frecuencia", "46-55");
Datos.addValue(3, "Frecuencia", "56-65");
Datos.addValue(7, "Frecuencia", "66-75");
Datos.addValue(11, "Frecuencia", "76-85");
Datos.addValue(21, "Frecuencia", "86-95");
Datos.addValue(28, "Frecuencia", "96-105");
Datos.addValue(16, "Frecuencia", "106-115");
Datos.addValue(22, "Frecuencia", "116-125");
Datos.addValue(7, "Frecuencia", "126-135");
Datos.addValue(1, "Frecuencia", "136-145");
Datos.addValue(2, "Frecuencia", "146 o Mas");
Datos2.addValue(0.008, "Frecuencia Relativa", "Menos de 46");
Datos2.addValue(0.008, "Frecuencia Relativa", "46-55");
Datos2.addValue(0.025, "Frecuencia Relativa", "56-65");
Datos2.addValue(0.058, "Frecuencia Relativa", "66-75");
Datos2.addValue(0.092, "Frecuencia Relativa", "76-85");
Datos2.addValue(0.175, "Frecuencia Relativa", "86-95");
Datos2.addValue(0.234, "Frecuencia Relativa", "96-105");
Datos2.addValue(0.134, "Frecuencia Relativa", "106-115");
Datos2.addValue(0.183, "Frecuencia Relativa", "116-125");
Datos2.addValue(0.058, "Frecuencia Relativa", "126-135");
Datos2.addValue(0.008, "Frecuencia Relativa", "136-145");
Datos2.addValue(0.017, "Frecuencia Relativa", "146 o Mas");
//Grafica.getXYPlot().setRenderer(render);
Grafica = ChartFactory.createLineChart("Variable continua"
, "Produccion", "Frecuencia", Datos, PlotOrientation.VERTICAL,
true,true,false);
Grafica2 = ChartFactory.createLineChart("Variable continua"
, "Produccion", "Frecuencia", Datos2, PlotOrientation.VERTICAL,
true,true,false);
Grafica3=ChartFactory.createLineChart ("Variablew", "Produccion", "Frecuencia", Datos2, PlotOrientation.VERTICAL,
true, true, false);
CategoryPlot plot = Grafica.getCategoryPlot();
//XYPlot awa = Grafica.getPlot();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JButton btnGraficar = new JButton("Graficar");
btnGraficar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ChartPanel Panel = new ChartPanel(Grafica);
JFrame Ventana = new JFrame("JFreeChart");
Ventana.getContentPane().add(Panel);
Ventana.pack();
Ventana.setVisible(true);
Ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
});
btnGraficar.setBounds(160, 36, 89, 23);
contentPane.add(btnGraficar);
JButton btnGraficarRelativas = new JButton("Graficar Relativas");
btnGraficarRelativas.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ChartPanel Panel = new ChartPanel(Grafica2);
JFrame Ventana = new JFrame("JFreeChart");
Ventana.getContentPane().add(Panel);
Ventana.pack();
Ventana.setVisible(true);
Ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
});
btnGraficarRelativas.setBounds(160, 95, 89, 23);
contentPane.add(btnGraficarRelativas);
}
}