グラフ上に数値を表示する良い方法があったら教えてください。
現状は、ChartLayerのshape-factoryプロパティにTextShapeを入れて表示しています。
BarLayerの場合は割ときれいに表示されるのですが、
LineLayerの場合はプロットと数値が重なって見づらくなってしまいます・・・。
よろしくお願いします!
どのような感じにみせたいのですか?
以下のLineLayerのshape-factoryのサンプルのような実装をしたのですか?
http://developers.curlap.com/curl/docs/r...Layer.html
もし、プロットと重ならないようにするならば、ずらせばいいのではないでしょうか?
shapeにはapply-translationというメソッドがありますので、それを使えば移動できますよ。
上記のサンプルを変更する形ならこんな感じですかね。
Code:
shape-factory =
{proc
{layer:LineLayer,
points:{FastArray-of PointRecordPair},
series-index:int
}:Shape
let constant fill-pattern:FillPattern =
{layer.get-fill-pattern-for-data-series series-index}
let constant group:ShapeGroup =
{ShapeGroup
arrow-body-width = 2px,
arrow-head-width = 8px,
arrow-head-length = 12px,
arrow-head-style = ArrowStyle.solid,
arrow-tail-style = ArrowStyle.none,
font-size = 8pt
}
{for point key idx in points do
{if idx < points.size - 1 then
|| add by hmino
def ts={TextShape
{value
def fname =
layer.y-axis-data[series-index].field.name
{format "%.2g", point.record[fname]}
},
color = FillPattern.black,
valign = "center"
}
{group.add
{ArrowShape
point.point,
points[idx + 1].point,
color = fill-pattern,
{EllipseShape
{GRect 5pt, 5pt, 5pt, 5pt},
translation = point.point,
color = {lighter-fill-pattern fill-pattern},
ts
||delete by hmino
||-- {TextShape
||-- {value
||-- def fname =
||-- layer.y-axis-data[series-index].field.name
||-- {format "%.2g", point.record[fname]}
||-- },
||-- color = FillPattern.black,
||-- valign = "center"
||-- }
}
}
}
{ts.apply-translation 2mm, 1mm}
}
}
{return group}
}
上のほうのコード削ってしまいましたが、わかりますかね?
頂いたソースコードで確認できました。
簡単にずらせるんですね!
ありがとうございます!
他にもapply-XXXXというメソッド(回転とか)がありますので使ってみてください。