- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试在甘特图中显示我的日志。每个日志表示为一个Task,每个Task有7个子任务,代表部分时序。如果子任务的值不为 0,则它们将显示在图表中(否则将不会显示...)。每个子任务的颜色取决于其描述。
我发现了一些接近我想要的东西( http://www.jfree.org/phpBB2/viewtopic.php?f=3&t=25206&sid=e506218a236895b1018d40d586b9fb7c ),但在这个例子中,它仅用于根据任务的描述来更改任务的颜色,而不是子任务。我还在某处读到,要更改子任务颜色,可能需要修改 drawTasks() 方法...但我真的不知道在该方法中要修改什么...如果有人可以在这里帮助我,我将非常感激...
这就是我的代码目前的样子:
public class Chart extends ApplicationFrame {
private static final long serialVersionUID = -8599149330893077525L;
private List<ChartEntry> logs = new ArrayList<ChartEntry>();
private ChartEntry chartEntry;
static IntervalCategoryDataset dataset;
final JFreeChart chart;
public Chart(final String title) {
super(title);
// create new dataset and chart
dataset = createDataset();
chart = createChart(dataset);
// create plot and renderer
// 04.02.2014 hier weitermachen, wenn MyGanttRenderer ist fertig
// save as PNG-File
Date today = new Date();
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd-MM-yy:HH:mm:SS");
File fileName = new File("/home/rinay/Dokumente/Auswertung Chart/"
+ DATE_FORMAT.format(today) + "_" + TestFirefox.testName
+ "_Chart.png");
try {
ChartUtilities.saveChartAsPNG(fileName, chart, 600, 900, null);
} catch (IOException e) {
throw new RuntimeException("Error saving a file", e);
}
// final ChartPanel chartPanel = new ChartPanel(chart);
// chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
// setContentPane(chartPanel);
}
private static class MyGanttRenderer extends GanttRenderer {
@Override
public Paint getItemPaint(int row, int col) {
Paint result;
// String subDescription = null;
XYTaskDataset tds = (XYTaskDataset) dataset;
TaskSeriesCollection tsc = tds.getTasks();
TaskSeries ts = tsc.getSeries(row);
Task t = ts.get(col);
// int count = t.getSubtaskCount();
// if (count == 0)
// return result;
// for(int i= 0; i< count;i++){
// subDescription = t.getSubtask(i).getDescription();
// }
result = getCategoryPaint(t.getDescription());
return result;
}
private Paint getCategoryPaint(String description) {
Paint result = Color.black;
switch (description) {
case "blocked":
result = Color.red;
break;
case "dns":
result = Color.orange;
break;
case "connect":
result = Color.yellow;
break;
case "ssl":
result = Color.green;
break;
case "send":
result = Color.cyan;
break;
case "wait":
result = Color.blue;
break;
case "receive":
result = Color.magenta;
break;
}
return result;
}
}
....
....
private IntervalCategoryDataset createDataset() {
// copy relevant information of each entry to a ChartEntry-Object
saveAsChartEntry(HarCreator.har);
// sort logs-List by date
sortLogsByDate();
// add log-List objects to JFreeChart-Dataset
final TaskSeries taskSeries = new TaskSeries("Zeiten");
// List<Task> tasks = new ArrayList<Task>();
// Test1: Logs-Anzahl ausgeben
System.out.println("Test 1: Anzahl Logs = " + logs.size());
// Test1
for (ChartEntry log : logs) {
// description of task
String description = log.getMethod() + " " + log.getURL();
// Start date
Date start = log.getDate();
// add total time of request to start date
Calendar cal = Calendar.getInstance();
Calendar timeCounter = Calendar.getInstance();
cal.setTime(start);
timeCounter.setTime(start);
cal.add(Calendar.MILLISECOND, (int) log.getTime());
Date end = cal.getTime();
// create new task
Task task = new Task(description, start, end);
for (int i = 0; i < log.getTimings().length; i++) {
String subDescription;
switch (i) {
case 0:
subDescription = "blocked";
break;
case 1:
subDescription = "dns";
break;
case 2:
subDescription = "connect";
break;
case 3:
subDescription = "ssl";
break;
case 4:
subDescription = "send";
break;
case 5:
subDescription = "wait";
break;
case 6:
subDescription = "receive";
break;
default:
subDescription = "";
break;
}
if (log.getTimingElement(i) != 0) {
Date subStart = timeCounter.getTime();
timeCounter.add(Calendar.MILLISECOND,
(int) log.getTimingElement(i));
Date subEnd = timeCounter.getTime();
Task subTask = new Task(subDescription, subStart, subEnd);
task.addSubtask(subTask);
} else
continue;
}
// add the new task above to tasks-List
taskSeries.add(task);
}
// Test 3: anzahl von tasks
System.out.println("Test 3: Anzahl von Tasks= " + taskSeries.getItemCount());
// Test 3
TaskSeriesCollection collection = new TaskSeriesCollection();
collection.add(taskSeries);
return collection;
}
....
....
方法 getCategoryPaint 应该根据给定的描述确定子任务的颜色...但我不知道在哪里实现这个方法...
最佳答案
It would be nice if you could explain to me what these to methods are actually doing in terms of setting different colors for subtasks.
在此example , initClut()
创建 List<Color>
包含父类(super class)的不同称呼 getItemPaint()
给定行和列的结果。定制getItemPaint()
实现返回给定行和列中每个子任务的列表中的下一个元素。在您的示例中,渲染器将使用相同的七种颜色列表,并且只有索引会更改。
private static class MyRenderer extends GanttRenderer {
private static final int PASS = 2; // assumes two passes
private final List<Color> clut = new ArrayList<Color>();
private final TaskSeriesCollection model;
private int row;
private int col;
private int index;
public MyRenderer(TaskSeriesCollection model) {
this.model = model;
// initialize clut
}
@Override
public Paint getItemPaint(int row, int col) {
if (this.row != row || this.col != col) {
this.row = row;
this.col = col;
index = 0;
}
int clutIndex = index++ / PASS;
return clut.get(clutIndex);
}
}
关于java - JFreeChart 甘特图根据描述为子任务绘制不同的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21558069/
我有一个 Pandas DataFrame,其中包含流量计开始测量流量的日期和站点退役的日期。我想生成一个以图形方式显示这些日期的图。这是我的 DataFrame 的示例: import pandas
我必须每天生成甘特图。我的想法是使用 R 的 DiagrammeR 包中包含的美人鱼 api。 我的数据将始终具有相同的结构,因此,我创建了一个非常原始的解析器,该解析器包含在可重现的示例中。 我面临
我不知道 Angular js,我正在使用这里的 Angular 甘特图https://github.com/angular-gantt/angular-gantt & 此图表显示日期但不显示日期(S
我正在尝试找出一种在 Highcharts Gantt 依赖路径上添加悬停工具提示的方法;但我不确定最好的方法,因为似乎没有 native 配置属性来与依赖路径和端点交互。 我从在渲染的 .highc
我一直在使用使用 javascript 的 DhtmlxGantt。我希望能够进行一些计算,例如里程碑、进度和天数。我想知道是否可以使用 DhtmlxGantt API java 而不是 javasc
我正在尝试构建一个甘特图,就像在这个 JSFiddle 示例中一样[ http://jsfiddle.net/2xkfm87e/11/ ](我现在已经使用下面的 jlbriggs 输入将这个 fidd
var tasks; d3.json("http://localhost:8080/result", function(error, data) { tasks = data data.f
我是 JFree 的新手。我想知道如何创建数据集,使特定作业的所有操作都具有相同的颜色(例如,O111、O122、O133、O144 具有相同的颜色,机器排列如图 2 所示)。 我尝试使用 TaskS
我想做一个循环,以便将所有数据放入我的图表中。但是,我不知道该怎么做。我试过一些东西,但没有用。我在循环行得到一个 Uncaught SyntaxError: $(".gantt").gantt({
我有 100% 的甘特图高度,但如果甘特图有很多信息,他会创建一个卷轴,或者如果有一些信息,他会创建一个包含信息和非常大空间的大正方形,直到正方形结束。任何想法,请帮助。我想要的是如果有很多信息不创建
我对 Javascript 比较陌生,并且一直在我的网站上使用 JSGantt.js 制作甘特图。 html 页面上所需的唯一代码如下所示: // here's all the html
我正在努力寻找有关如何执行此操作的任何真实文档,基本上我使用 jquery.gantt ( http://taitems.github.io/jQuery.Gantt/ ) 显示数据库中的数据,并且需
我正在寻找一个基于 JS 的资源规划组件,其中我在左侧有可用资源,在右侧有资源负载。 到目前为止,我只找到了一些甘特图实现,它们缺乏添加、移动和编辑功能。我想知道这样的组件是否存在。 最佳答案 我不知
我想在包含“建议播种窗口”和实际播种日期的甘特图上叠加降雨数据(列)。从数据集中,我可以分别创建两者,但不能在一个图表上创建。任何指针都非常感谢。 ## plot Gantt chart with s
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 3 年前。
我知道 Sharepoint 对甘特图有一些支持(任务的甘特 View )。我正在寻找的是提供高级任务关系的方法(FF:完成到完成,FS:完成到开始等)有没有办法提供它或者是否有免费的组件? 最佳答案
向 this example 中的 d3 甘特图添加水平网格线的最佳方式是什么? ?我最初想制作一个轴并使刻度标记为图表的长度(如 this example 中所示),但这会将它们直接放在图表矩形的中
我必须使用 jQuery 将类似甘特图 的工具集成到房间预订解决方案中。甘特图应该是非常互动的,而不是简单地显示数据。它应该响应拖放,它应该在左侧有一个 TreeView 来对任务进行分组,它应该有缩
我正在使用一个数据集,该数据集描述了与一系列公司的契约(Contract)期限。显然,所有契约(Contract)都有开始日期和(最短)期限。然而,某些契约(Contract)可能会延长。这是一个数据
我在 JavaScript 中使用 Highcharts 甘特图。 我想停用表格顶部的标题,这对我来说没有用。截图中的红色矩形: https://files.normanfeltz.fr/files/
我是一名优秀的程序员,十分优秀!