注意:我以前从未使用过摇摆,也没有图形2D,而且我的编程也不多......
我要做的是制作一个以数组/向量为输入的程序。这个数组,其中每个索引0,1,2等都保持零或一(int) - 在分0,1,2等中表示“无活动”或“活动”......
我希望程序绘制一条不连续的直线水平线 - 表示“活动”与“无活动”作为时间的函数 - 基于作为输入的数组。 当我运行代码时,这应该会弹出一个面板。 想法是将活动/没有活动显示为时间的函数,因此该线最好以图表(x轴和y轴)显示......并且这些不连续线中的几条将在彼此之上 - 用于比较不同的案例。
我已经尝试了一段时间来查看使用swing和2D的示例,但由于我的时间非常有限 - 我真的需要一些帮助..
任何代码:
...非常感谢:)
从评论中添加:
抱歉 - 没有完成我的答案:)我可以肯定尝试学习如何在Swing框架,面板等中使用所有不同的东西。但是目前我的主要目标是完成我的学校作业 - 这是数据本身的可视化 - 他们并不真正关心你如何到达那里,最重要的是它可视化一些有用的东西......所以我认为如果我得到一些代码,我可以减少花在这上面的时间这可以让我开始 - 而不必先了解它是如何工作的。
答案 0 :(得分:4)
无需了解Graphics2D
,只需访问JFreeChart
即可。这是一个简单的tutorial来帮助您入门(尽管需要最少的Java编程知识)
答案 1 :(得分:2)
这是一个例子,我想它会有所帮助
import java.awt.*;
import javax.swing.*;
public class ActivityGraph extends JFrame {
int[] active = {0,1,1,0,0,0,1,0,1,0,1,0,1,1,1,1,0,0,1,0,1,1};
int length = 25, //basic length in pixels for drawing the lines
offset = 50; //so the lines aren't sticked at the border
private ActivityGraph(String name, int x, int y, int width, int height) {
super(name);
setBounds(x, y, width, height);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel panel = new GraphPanel();
//panel.setBounds(0, 0, 800, 400); not nessesary
add(panel);
}
public static void main(String[] args) {
new ActivityGraph("Activity Graph", 60, 60, 800, 400).setVisible(true);
}
private class GraphPanel extends JPanel {
public void paint(Graphics g) {
g.setColor(Color.white);
g.fillRect(0, 0, 800, 400);
//setting background (method setBackground() doesn't want to work for me)
g.setColor(Color.black);
for(int i = 0; i<active.length; i++) {
if(active[i]==0) {
g.drawLine(offset + i*length, offset + length, offset + i*length + length, offset + length);
}
else {
g.drawLine(offset + i*length, offset, offset + i*length + length, offset);
}
/*
* draw line from XY point to another XY point
* notice that X = Y = 0 point is in left top corner
* so higher Y values will mean "downer" points acctualy
*/
}
}
}
}
如果你愿意,我可以给你发送数学函数的图形抽屉(如窦,电源......)