我正在用java编写一个包含GUI的科学实验控制程序.
我帮助为此任务选择图表库.该程序将包含两种类型的图表:
具有大量数据点的折线图(在每个图中10 ^ 4-10 ^ 5点的范围内),刷新率大约每0.5-1秒一次,因此性能是一个因素.此图表必须包含具有不同缩放比例的数据点集.
没有许多数据点的散点图必须包含错误条,或某种方式指示点中的错误.优选地,在X轴和Y轴上,例如以十字线形式.
对数刻度也是必须的,一个好的缩放工具和导出工具也会很好.我更倾向于使用单个包可能的两个图表的解决方案.
从研究中我做了一个近乎完美的选择似乎是javaFX 2.0.从我读到的,它具有良好的性能,也看起来很棒,但我似乎找不到错误栏的选项.由于我根本不了解javaFX,扩展图表库以包含错误栏是多么简单,或者是否包含我未找到的包含此内容的开源添加?
另一种选择是Google图表库,它似乎具有所有必要的功能,但是我担心刷新率在第一种图表类型中会出现问题.这是一个可行的问题吗?
我使用过JFreeChart,但我对性能感到担忧,并且发现添加小的更改非常困难.这些包括在matlab创建图表后在运行时更改绘制点的颜色的方法.所有这些都需要大量额外的编码和时间消耗,我试图避免.
最实用的最后一个选项是JChart2D.它似乎拥有我需要的大多数功能,而我唯一的问题是它看起来不太好.
有人对我有任何建议吗?我计划在尽可能短的时间内对此进行编码,最糟糕的情况是我发现某些第三方软件包中的错误或我需要的选项不可用并且需要大量额外的代码,尽管它会是很高兴学到新东西.
这个决定当然可能影响我选择使用的整个GUI包,目前看来是Swing.
谢谢,
是否可以改变条形颜色?
我编写了一个简单的计数程序.
我想再实现一件事:如果计数值大于200,则使用蓝色绘制条形图.如果没有,请使用黄色.
目前,所有条形颜色均为红色.
所以,我想问一下,是否可以更改条形颜色?
如果是的话,有人可以给我一些指导来实现吗?
提前致谢!
附件是我的编码:
<%@page contentType="text/html"%>
<%@page import="java.io.*" %>
<%@page import="java.sql.*" %>
<%@page import="org.jfree.data.category.*" %>
<%@page import="org.jfree.chart.*" %>
<%@page import="org.jfree.chart.plot.*" %>
<html>
<body>
<%
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
try
{
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/delivery","root","root");
Statement sta = con.createStatement();
ResultSet res = sta.executeQuery("SELECT inventory, subject from statistics");
int count;
String subject;
while (res.next())
{
count = res.getInt("inventory");
subject = res.getString("subject");
dataset.addValue(count,"enrollment count statistics", subject);
}
}
catch (Exception e) {
System.err.println(e.getMessage());
}
JFreeChart bar = …
Run Code Online (Sandbox Code Playgroud) 如果我们想要改变"实时"某些数据,我想知道如何刷新图表.我的意思是,例如,我有一个带有TaskSeries的图表,该图表出现在3年后我希望将3年改为5年.我希望图表立即改变.
是否有某种更新图表或类似的东西?
我知道您可以说"获取您的TaskSeries,进行更改并自动刷新",但我的TaskSeries已生成,我无法轻易更改这些.这就是为什么我想找到一种重新计算和重建整个图表的方法.
我需要使用JFreeChart创建一个简单的直方图.应该有3组具有分配给这些组中的每一组的数值.问题是DefaultCategoryDataset
需要指定"Group"和"Subgroup"(即dataset.setValue(5,"Subgroup1.1","Group1"
);),但我没有子组.有什么替代方案DefaultCategoryDataset
?我需要得到这样的东西:
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.setValue(2, "Group1");
dataset.setValue(3, "Group2");
dataset.setValue(5, "Group3");
Run Code Online (Sandbox Code Playgroud) 我JFreeCharts
在java中使用创建条形图.我的问题很简单......如何为条形图中的所有条形图选择自定义颜色?我不确定这个定制是否会在a中完成GradientPaint
.我的代码确定条形颜色的一个例子是:
final GradientPaint gp0 = new GradientPaint(
0.0f, 0.0f, Color.blue,
0.0f, 0.0f, Color.blue
);
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是自定义颜色的正确方法.基本上,我不知道是否GradientPaint
是正确的去法.如果是,有人可以告诉我如何编辑此代码以使其成为自定义颜色而不是蓝色?
我不确定这是否有帮助,但是说自定义颜色的信息是
有这种方法可以自定义图表的颜色吗?
我想改变jfreechart的背景颜色.它以灰色显示,我想要一个白色背景.我试过chart.setBackgroundPaint(Color.WHITE); 但它并没有向我展示白色背景.我有以下代码显示该图
chart.setBackgroundPaint(Color.WHITE);
Run Code Online (Sandbox Code Playgroud)
我该如何显示白色背景?
在JFreeChart中有没有办法从ChartMouseEvent确定鼠标结束的x,y坐标(在绘图空间中)?我尝试使用域十字准线值,但这看起来不准确,并且滞后于实际的鼠标事件.
谢谢,
杰夫
在我当前的项目中,我尝试添加BufferedImage
一个PDFBox文档.更具体地说,我使用的是图像JFreeChart
.我的代码看起来像这样:
public void exportToPDF(JFreeChart chart, String filePath){
PDDocument doc = null;
PDPage page = null;
PDXObjectImage ximage = null;
try {
doc = new PDDocument();
page = new PDPage();
doc.addPage(page);
PDPageContentStream content = new PDPageContentStream(doc, page);
BufferedImage image = chart.createBufferedImage(300, 300);
ximage = new PDJpeg(doc, image);
content.drawImage(ximage, 20, 20);
content.close();
} catch(IOException ie) {
}
doc.save(filePath);
doc.close();
}
Run Code Online (Sandbox Code Playgroud)
文档被创建; 我可以添加文本,但是我收到错误,指出图像没有足够的信息显示.
我有什么不对的任何线索?
我使用JFreeChart创建了XY折线图,有两个数据集,我希望两条线都有不同的颜色.我尝试使用以下代码 -
XYPlot plot = chart.getXYPlot();
XYItemRenderer xyir = plot.getRenderer();
xyir.setSeriesPaint(0, Color.GREEN);
plot.setDataset(0, xyDataset1);
xyir.setSeriesPaint(1, Color.blue);
plot.setDataset(1, xyDataset2);
Run Code Online (Sandbox Code Playgroud)
此外,我尝试使用以下代码,我使用不同的渲染器(不知道这是否是正确的方法) -
XYPlot plot1 = chart.getXYPlot();
XYPlot plot2 = chart.getXYPlot();
XYItemRenderer xyir1 = plot1.getRenderer();
xyir1.setSeriesPaint(0, Color.GREEN);
plot1.setDataset(0, xyDataset1);
XYItemRenderer xyir2 = plot2.getRenderer();
xyir2.setSeriesPaint(1, Color.blue);
plot2.setDataset(1, xyDataset2);
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,它都打印出蓝色的线条.怎么了??有什么建议??
我从这里导入了jfreechart-fse:https://github.com/jfree/jfreechart-fse ,我已将其导入eclipse作为maven项目.
之后,我有很多问题,例如在org.jfree.chart paskage中的类ChartPanel中,eclipse没有看到"implements"部分,并且注意到
@Override
public void actionPerformed(ActionEvent event) {...}
Run Code Online (Sandbox Code Playgroud)
作为一个问题.在许多其他情况下也是如此.
你能说出这有什么问题吗?