我有一个用GRAL创建的情节:
我遇到的问题与轴有关。基本上我希望Y轴在每个图形中从0 .. 4运行,我找不到强制这种行为的方法。如果我缩小有额外的增量,但我希望0 .. 4出现在未经修饰的地块中。
我也尝试使用setCustomTicks
,但默认的刻度仍然存在,有没有办法删除它们并只使用自定义的?
非常感谢帮助!
我的情节代码是:
int[][] seq_data_200 = chunkArray(seq_data, 200);
DataTable[] listData = new DataTable[seq_data_200.length];
for (int i = 0; i < seq_data_200.length; i++){
DataTable data = new DataTable(Integer.class, Integer.class);
for (int j = 0; j < seq_data_200[i].length; j++) {
data.add(j, seq_data_200[i][j]);
}
listData[i] = data;
}
panel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
panel.setLayout(new GridLayout(seq_data_200.length,1,20,20));
for (int i = 0; i < listData.length; i++) {
XYPlot plot = new XYPlot(listData[i]);
LineRenderer lines = new DefaultLineRenderer2D();
plot.setLineRenderer(listData[i], lines);
Color color = new Color(0.0f, 0.3f, 1.0f);
plot.getPointRenderer(listData[i]).setColor(color);
plot.getLineRenderer(listData[i]).setColor(color);
double insetsTop = 20.0, insetsLeft = 60.0, insetsBottom = 60.0, insetsRight = 40.0;
plot.setInsets(new Insets2D.Double(insetsTop, insetsLeft, insetsBottom, insetsRight));
plot.getTitle().setText(getTitle(i, sequence));
plot.getAxisRenderer(XYPlot.AXIS_X).setLabel("Bases");
plot.getAxisRenderer(XYPlot.AXIS_X).setCustomTicks(getTicks(i, sequence));
plot.getAxisRenderer(XYPlot.AXIS_Y).setLabel("Number of " + nucleo + "'s");
plot.getAxisRenderer(XYPlot.AXIS_Y).setMinorTicksVisible(false);
plot.getAxisRenderer(XYPlot.AXIS_Y).setTickSpacing(1);
panel.add(new InteractivePanel(plot), BorderLayout.CENTER);
}
答案 0 :(得分:0)
我发现了一个有点过时的修复工作:
GRAL使用DataTable
决定轴高。它使用表的max和min值来定义视口。
所以如果你添加两个数据:
DataTable.add(x,minY)
DataTable.add(x,maxY)
它们会在图表上显示一些虚假数据,但视口会自行调整大小到您想要的轴。由于这些点在最后添加,它们往往会有些模糊,容易被忽略。
答案 1 :(得分:0)
以下方法对我有用:
plot.getAxis(XYPlot.AXIS_X).setRange(0.0, 4.0);
plot.getAxis(XYPlot.AXIS_Y).setRange(0.0, 20.0);