我想在图表的 X 轴上显示一些日期,这里据说我必须使用 TimeSeriesCollections 对象
似乎我必须向 TimeSeriesCollections 添加一个 TimeSeries,并且必须使用 RegularTimePeriod 构建 TimeSeries ......我有点困惑......
你能解释一下我必须做什么吗?如果可能的话,你能提供一些示例代码吗?谢谢
我正在使用 Jfreechart 创建图表。我正在创建BufferedImage
图表并将其写入OutputStream
.
它在显示环境中工作正常,但在环境中不起作用headless
。
请帮助您如何让它在这样的环境中工作。
我在日志中遇到异常:
SEVERE: Servlet.service() for servlet [appServlet] in context with path [/WebAdmin] threw exception [Handler processing failed; nested exception is java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.] with root cause
java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65)
at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:110)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74)
at java.lang.Class.forName0(Native Method) …
Run Code Online (Sandbox Code Playgroud) 以下是英格兰和苏格兰之间拉锯战当前状态的代码:
public TugOfWar(String s) {
super(s);
// data set
DefaultKeyedValues2DDataset dataset = new DefaultKeyedValues2DDataset();
dataset.addValue(0.2, "England", "");
dataset.addValue(0.8, "Scotland", "");
JFreeChart chart = ChartFactory.createStackedBarChart("tug-of-war",
"", "", dataset, PlotOrientation.HORIZONTAL, true, false, false);
CategoryPlot plot = chart.getCategoryPlot();
// customize axis
SymbolAxis axis = new SymbolAxis("", new String[]{
"England", "draw", "Scotland"});
axis.setRange(0, 2d);
plot.setRangeAxis(axis);
// customize renderer
BarRenderer renderer = new StackedBarRenderer();
renderer.setBase(0.8);
renderer.setMinimumBarLength(0);
renderer.setMaximumBarWidth(0.5);
renderer.setItemMargin(0.0);
renderer.setDrawBarOutline(true);
renderer.setShadowVisible(true);
renderer.setBarPainter(new StandardBarPainter());
plot.setRenderer(renderer);
// customize background
plot.setBackgroundPaint(Color.WHITE);
plot.setDomainGridlinePaint(Color.lightGray);
plot.setRangeGridlinePaint(Color.lightGray);
plot.setDomainCrosshairVisible(true);
plot.setRangeCrosshairVisible(true);
ChartPanel chartpanel = new …
Run Code Online (Sandbox Code Playgroud) 我想补充JFreeChart
到JPanel
,然后添加JPanel
到JTabbedPane
.我设法显示JFreeChart
上JFrame
,但我想添加JFreeChart
为一个4片JTabbedPane
.
代码显示图表:
public class Chart extends javax.swing.JPanel {
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
JPanel jPanel1 = new JPanel();
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.setValue(60, "Marks", "Student 1");
dataset.setValue(40, "Marks", "Student 2");
dataset.setValue(90, "Marks", "Student 3");
dataset.setValue(50, "Marks", "Student 4");
dataset.setValue(70, "Marks", "Student 5");
dataset.setValue(30, "Marks", "Student 6");
JFreeChart chart = ChartFactory.createBarChart(
"Student Marks", "Student Name", "Marks", dataset,
PlotOrientation.VERTICAL, false, true, false);
CategoryPlot p = …
Run Code Online (Sandbox Code Playgroud) 我有两组数据
int[] x1 = {1,2,3,4,5,6,7,8,9,10};
int[] y1 = {1,2,3,5,6,8,9,10,14,11};
int[] x2 = {1,2,3,4,5,6,7,8,9,10};
int[] y2 = {0,2,3,5,0,8,9,8,14,11};
int[] z2 = {1,2,3,1,2,3,1,2,3,1};
Run Code Online (Sandbox Code Playgroud)
我要绘制的x1,y1
作为XYLineChart
,然后绘制x2,y2
上没有线同积分散.
我还需要每个散点都是xy,y2
不同的颜色,具体取决于值z2
(1=Color.red, 2=Color.green, 3=Color.blue)
我怎样才能做到这一点?
到目前为止,我有:
JPanel panel_1 = new JPanel();
panel_1.setLayout(new BorderLayout(0, 0));
XYSeriesCollection dataset = new XYSeriesCollection();
XYSeries series1 = new XYSeries("series1");
for(int i=0; i<x1.length; i++){
series1.add(x1[i],y1[i]);
}
dataset.add(series1);
JFreeChart chart = ChartFactory.createXYLineChart("Title", "x", "y", dataset, PlotOrientation.VERTICAL, false, false, false);
ChartPanel cp = new ChartPanel(chart);
panel_1.add(cp, BorderLayout.CENTER); …
Run Code Online (Sandbox Code Playgroud) 我有一张时间序列图表.我的x轴是日期,Y轴只是数字.我试图在x轴上格式化日期,但是我一直在例外.我的代码如下:
TimeSeries trueSeries = new TimeSeries("True Data");
TimeSeries regressionSeries = new TimeSeries("Regression Line");
TimeSeries averageSeries = new TimeSeries("Moving Average");
for (Date date : regression.keySet()) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int month = cal.get(Calendar.MONTH) + 1;
int day = cal.get(Calendar.DAY_OF_MONTH);
int year = cal.get(Calendar.YEAR);
regressionSeries.add(new Day(day, month, year),
regression.get(date));
averageSeries.add(new Day(day, month, year),
movingAverage.get(date));
trueSeries.add(new Day(day, month, year), trueData.get(date));
}
TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(trueSeries);
dataset.addSeries(regressionSeries);
dataset.addSeries(averageSeries);
JFreeChart chart = ChartFactory.createXYLineChart(
stock.getCompanyName() + " (" + stock.getTicker() + ")", …
Run Code Online (Sandbox Code Playgroud) 如何拥有像https://www.amcharts.com/demos/line-chart-with-scroll-and-zoom/这样的图表
我对这些功能特别感兴趣
我在这里做了初步尝试Scrollable JFree 域轴和自定义标记标签在垃圾神的帮助下我使域可滚动。
我仍然缺少这些能够有效使用图形的功能。
我正在使用 Jfreechart 创建圆环图。我想删除分隔线(即绿色部分和白色部分之间的线)-这条线超出了图表部分。我需要将其限制为图表宽度。
在此添加的图像中,您可以清楚地看到图表饼图外的扩展分节线。(以蓝色圆圈标记)。我需要摆脱那条延长线,分节线不应超出实际的饼图区域。
任何人都可以帮助我实现这些目标。
下面是我正在使用的代码:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import javax.swing.JPanel;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlotState;
import org.jfree.chart.plot.RingPlot;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.text.TextUtilities;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.RefineryUtilities;
import org.jfree.ui.TextAnchor;
public class DonutChart extends ApplicationFrame {
private static final long serialVersionUID = 1L;
static class CustomRingPlot extends RingPlot {
private Font centerTextFont;
private Color centerTextColor;
public CustomRingPlot(PieDataset dataset) {
super(dataset);
this.centerTextFont = new Font(Font.SANS_SERIF, Font.BOLD, 24);
this.centerTextColor = Color.BLACK; …
Run Code Online (Sandbox Code Playgroud) 我正在使用JFreeChart
并且我想ToolTip
通过创建我自己的Class
扩展ChartPanel
和覆盖来自定义createToolTip()
。
static private class PrivateChartPanel extends ChartPanel{
//constructors
@Override
public JToolTip createToolTip() {
JToolTip jtt = super.createToolTip();
jtt.setBackground(Color.WHITE);
jtt.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1, true));
return jtt;
}
}
Run Code Online (Sandbox Code Playgroud)
问题出在Border
。它不是在所有角落都是圆形的。
为什么它不是在所有角落都圆润的,我是怎么做到的?
PS:我新建了一个简单的项目
import java.awt.Color;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class HelloWorld {
public static void main(String[] args) {
JFrame a = new JFrame();
a.setBounds(100, 100, 100, 100);
a.setLayout(null);
JPanel b = new JPanel();
b.setBounds(5, 5, 50, 50);
b.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1, true)); …
Run Code Online (Sandbox Code Playgroud) 全部:
我使用下面的图表来显示线图.当我运行以下代码时,我正在获取窗口,但它是空白的,不显示图形.请帮助我,并告诉我如何使用下面的代码在html页面中显示线图.
import org.jfree.chart.*;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.*;
public class xyLine {
public static void main(String arg[]) {
XYSeries series = new XYSeries("Average Weight");
series.add(20.0, 20.0);
series.add(40.0, 25.0);
series.add(55.0, 50.0);
series.add(70.0, 65.0);
XYDataset xyDataset = new XYSeriesCollection(series);
JFreeChart chart = ChartFactory.createXYLineChart(
"XYLine Chart using JFreeChart", "Age", "Weight",
xyDataset, PlotOrientation.VERTICAL, true, true, false);
ChartFrame frame1 = new ChartFrame("XYLine Chart", chart);
frame1.setVisible(true);
frame1.setSize(300, 300);
}
}
Run Code Online (Sandbox Code Playgroud) java ×10
jfreechart ×10
swing ×2
chartpanel ×1
charts ×1
graphing ×1
java-10 ×1
jtabbedpane ×1
line-plot ×1
linegraph ×1
scatter-plot ×1
time-series ×1
tooltip ×1