- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 CombinedDomainXYPlot 中显示一个标记。这是行不通的。我可以为每个子图添加标记。但我想为 CombinedDomainXYPlot 添加它。任何人都可以告诉我有关此问题的信息。我认为十字准线的行为是相同的。
这是创建 CombinedDomainXYPlot 并尝试添加标记的工作示例。添加标记在createCombinedChart()
import java.awt.Font;
import javax.swing.JPanel;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.annotations.XYTextAnnotation;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CombinedDomainXYPlot;
import org.jfree.chart.plot.IntervalMarker;
import org.jfree.chart.plot.Marker;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
/**
* A demonstration application showing how to create a combined chart.
*/
public class MarkerDemo2 extends ApplicationFrame {
/**
* Constructs a new demonstration application.
*
* @param title the frame title.
*/
public MarkerDemo2(String title) {
super(title);
JFreeChart chart = createCombinedChart();
ChartPanel panel = (ChartPanel) createDemoPanel();
panel.setPreferredSize(new java.awt.Dimension(500, 270));
setContentPane(panel);
}
/**
* Creates a combined chart.
*
* @return The combined chart.
*/
private static JFreeChart createCombinedChart() {
// create subplot 1...
XYDataset data1 = createDataset1();
XYItemRenderer renderer1 = new StandardXYItemRenderer();
NumberAxis rangeAxis1 = new NumberAxis("Range 1");
XYPlot subplot1 = new XYPlot(data1, null, rangeAxis1, renderer1);
subplot1.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
// add secondary axis
subplot1.setDataset(1, createDataset2());
NumberAxis axis2 = new NumberAxis("Range Axis 2");
axis2.setAutoRangeIncludesZero(false);
subplot1.setRangeAxis(1, axis2);
subplot1.setRangeAxisLocation(1, AxisLocation.BOTTOM_OR_RIGHT);
subplot1.setRenderer(1, new StandardXYItemRenderer());
subplot1.mapDatasetToRangeAxis(1, 1);
XYTextAnnotation annotation = new XYTextAnnotation("Hello!", 50.0, 10000.0);
annotation.setFont(new Font("SansSerif", Font.PLAIN, 9));
annotation.setRotationAngle(Math.PI / 4.0);
subplot1.addAnnotation(annotation);
// create subplot 2...
XYDataset data2 = createDataset2();
XYItemRenderer renderer2 = new StandardXYItemRenderer();
NumberAxis rangeAxis2 = new NumberAxis("Range 2");
rangeAxis2.setAutoRangeIncludesZero(false);
XYPlot subplot2 = new XYPlot(data2, null, rangeAxis2, renderer2);
subplot2.setRangeAxisLocation(AxisLocation.TOP_OR_LEFT);
// parent plot...
CombinedDomainXYPlot plot = new CombinedDomainXYPlot(new NumberAxis("Domain"));
plot.setGap(10.0);
// add the subplots...
plot.add(subplot1, 1);
plot.add(subplot2, 1);
plot.setOrientation(PlotOrientation.VERTICAL);
// Add marker
Marker marker = new IntervalMarker(30, 40);
plot.addDomainMarker(marker);
// Working
// subplot1.addDomainMarker(marker);
// return a new chart containing the overlaid plot...
JFreeChart chart = new JFreeChart("CombinedDomainXYPlot Demo",
JFreeChart.DEFAULT_TITLE_FONT, plot, true);
ChartUtilities.applyCurrentTheme(chart);
return chart;
}
/**
* Creates a sample dataset.
*
* @return Series 1.
*/
private static XYDataset createDataset1() {
// create dataset 1...
XYSeries series1 = new XYSeries("Series 1a");
series1.add(10.0, 12353.3);
series1.add(20.0, 13734.4);
series1.add(30.0, 14525.3);
series1.add(40.0, 13984.3);
series1.add(50.0, 12999.4);
series1.add(60.0, 14274.3);
series1.add(70.0, 15943.5);
series1.add(80.0, 14845.3);
series1.add(90.0, 14645.4);
series1.add(100.0, 16234.6);
series1.add(110.0, 17232.3);
series1.add(120.0, 14232.2);
series1.add(130.0, 13102.2);
series1.add(140.0, 14230.2);
series1.add(150.0, 11235.2);
XYSeries series1b = new XYSeries("Series 1b");
series1b.add(10.0, 15000.3);
series1b.add(20.0, 11000.4);
series1b.add(30.0, 17000.3);
series1b.add(40.0, 15000.3);
series1b.add(50.0, 14000.4);
series1b.add(60.0, 12000.3);
series1b.add(70.0, 11000.5);
series1b.add(80.0, 12000.3);
series1b.add(90.0, 13000.4);
series1b.add(100.0, 12000.6);
series1b.add(110.0, 13000.3);
series1b.add(120.0, 17000.2);
series1b.add(130.0, 18000.2);
series1b.add(140.0, 16000.2);
series1b.add(150.0, 17000.2);
XYSeriesCollection collection = new XYSeriesCollection();
collection.addSeries(series1);
collection.addSeries(series1b);
return collection;
}
/**
* Creates a sample dataset.
*
* @return A sample dataset.
*/
private static XYDataset createDataset2() {
// create dataset 2...
XYSeries series2 = new XYSeries("Series 2");
series2.add(10.0, 6853.2);
series2.add(20.0, 9642.3);
series2.add(30.0, 8253.5);
series2.add(40.0, 5352.3);
series2.add(50.0, 3532.0);
series2.add(60.0, 2635.3);
series2.add(70.0, 3998.2);
series2.add(80.0, 1943.2);
series2.add(90.0, 6943.9);
series2.add(100.0, 7843.2);
series2.add(105.0, 6495.3);
series2.add(110.0, 7943.6);
series2.add(115.0, 8500.7);
series2.add(120.0, 9595.9);
return new XYSeriesCollection(series2);
}
/**
* Creates a panel for the demo (used by SuperDemo.java).
*
* @return A panel.
*/
public static JPanel createDemoPanel() {
JFreeChart chart = createCombinedChart();
ChartPanel panel = new ChartPanel(chart);
panel.setMouseWheelEnabled(true);
return new ChartPanel(chart);
}
/**
* Starting point for the demonstration application.
*
* @param args ignored.
*/
public static void main(String[] args) {
MarkerDemo2 demo = new MarkerDemo2(
"JFreeChart: CombinedDomainXYPlotDemo4.java");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
}
最佳答案
drawAnnotations
在XYPlot
中实现,不幸的是CombinedDomainXYPlot
子类XYPlot
但没有调用drawAnnotations
在其重写的 draw
实现中或将注释转发到子图中。
您可以通过子类化 CombinedDomainXYPlot
来提供 addAnnotation
和 removeAnnotation
的实现。
关于java - 在 CombinedDomainXYPlot 中创建标记/十字线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12914179/
当我从使用 CombinedDomainXYPlot 的图表中隐藏系列数时,所有范围轴都会很好地自动重新缩放。但是,域轴不会重新缩放。有什么方法可以手动刷新缩放比例,或者我可能缺少一个设置来启用此设置
如果我不保留对它们的任何引用,是否有办法将绘图列表添加到 CombinedDomainXYPlot? 我想得到那里的地 block ,与他们一起工作,并可能将它们从合成的地 block 中移除。 这是
我想在 CombinedDomainXYPlot 中显示一个标记。这是行不通的。我可以为每个子图添加标记。但我想为 CombinedDomainXYPlot 添加它。任何人都可以告诉我有关此问题的信息
是否可以在不使用“添加”或“删除”的情况下显示/隐藏组合域XY图中的子图? 最佳答案 您不必将子图添加到图表中,您可以将其添加到组合图中。当然,必须将该图添加到图表中。 关于java - JFreeC
上下文: Java swing 应用程序使用 JFreeChart 生成图表。该图表是一个 CombinedDomainXYPlot(使用 XYBarRenderer),在 X 轴上有一个基于 Per
我是一名优秀的程序员,十分优秀!