2

のY値で、単純な水平線を追加するにはどのように私はそうのようなチャート作成しました:情報を追加および/または更新するために使用はJFreeChartなTimeSeries

enter image description here

メインコード:

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd H:mm:ss"); 
Date date = simpleDateFormat.parse(dateAsStringToParse); 
Second second = new Second(date); 
myInfo.getSeries().addOrUpdate(second, maxValue); // maxValue is an Integer 

そして、実際のチャートを作成するための:

final XYDataset dataset = new TimeSeriesCollection(myInfo.getSeries()); 
JFreeChart timechart = ChartFactory.createTimeSeriesChart(myInfo.getName() 
    + " HPS", "", "HPS", dataset, false, false, false); 

私は単純に追加したいと思いますn水平線(X(時間軸)に平行)を一定の値にすると、10,000としましょう。

enter image description here

は何私のコードでこれを達成する最も簡単な(最も正しい)道のようになります。だから、グラフはそうのようになりますか?

+0

[例](https://stackoverflow.com/search?tab=votes&q=%5bjfreechart%5d%20XYLineAnnotation)のために、 '重いと多分' XYLineAnnotation'、ストローク? – trashgod

+0

@trashgodこれは素晴らしい提案ですが、 'timechart.getXYPlot()。addAnnotation(new XYLineAnnotation(0、1.5、100000、1.5));' 'x1、y1、x2、y2'の値私の写真のようにチャートを横切ってそれを取得するには? – Idos

答えて

2

XYLineAnnotationが欲しいと思われますが、TimeSeriesの座標は厄介な場合があります。 TimeSeriesChartDemo1から、次のように変更してグラフを表示しました。

  1. まず、我々はTimeSeriesの最初と最後のRegularTimePeriodためx値を必要としています。

    long x1, x2; 
    … 
    x1 = s1.getTimePeriod(0).getFirstMillisecond(); 
    x2 = s1.getNextTimePeriod().getLastMillisecond(); 
    
  2. そして、一定y値は容易です。私はあなたがたとえば、あなたのTimeSeriesから価値を引き出すことができ、また

    double y = 140; 
    

    140を選びました。

    double y = s1.getMinY() + ((s1.getMaxY() - s1.getMinY())/2); 
    
  3. 最後に、アノテーションを作成してプロットに追加します。

    XYLineAnnotation line = new XYLineAnnotation(
        x1, y, x2, y, new BasicStroke(2.0f), Color.black); 
    plot.addAnnotation(line); 
    

image

+0

いつものように感動して、ありがとう! – Idos