私はPieChartを描画するためにSystem.Windows.Controls.DataVisualization.Chartingを使用しています。 しかし、グラフ上の各スライスのパーセンテージ/値を表示する方法はわかりません。 これは可能ですか?chartingToolkit:各円の値を表示する方法のグラフ
0
A
答えて
0
ラベルを管理するプロパティがないため、System.Windows.Controls.DataVisualization.Charting PieChart
にパーセンテージを追加することはそれほど迅速ではありません。
いずれにしても、目標に到達する方法はいくつかあります。私はarticle on my blogを書いて、私が使ったものを記述しました。あなたは、元のGeometry
には(パーセントで)FormattedText
ジオメトリを追加して見ることができるように
public class PieDataPoint : System.Windows.Controls.DataVisualization.Charting.PieDataPoint
{
public static readonly DependencyProperty TextedGeometryProperty =
DependencyProperty.Register("TextedGeometry", typeof(Geometry), typeof(PieDataPoint));
public Geometry TextedGeometry
{
get { return (Geometry)GetValue(TextedGeometryProperty); }
set { SetValue(TextedGeometryProperty, value); }
}
static PieDataPoint()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(PieDataPoint),
new FrameworkPropertyMetadata(typeof(PieDataPoint)));
}
public PieDataPoint()
{
DependencyPropertyDescriptor dependencyPropertyDescriptor
= DependencyPropertyDescriptor.FromProperty(GeometryProperty, GetType());
dependencyPropertyDescriptor.AddValueChanged(this, OnGeometryValueChanged);
}
private double LabelFontSize
{
get
{
FrameworkElement parentFrameworkElement = Parent as FrameworkElement;
return Math.Max(8, Math.Min(parentFrameworkElement.ActualWidth,
parentFrameworkElement.ActualHeight)/30);
}
}
private void OnGeometryValueChanged(object sender, EventArgs arg)
{
Point point;
FormattedText formattedText;
CombinedGeometry combinedGeometry = new CombinedGeometry();
combinedGeometry.GeometryCombineMode = GeometryCombineMode.Exclude;
formattedText = new FormattedText(FormattedRatio,
CultureInfo.CurrentCulture,
FlowDirection.LeftToRight,
new Typeface("Arial"),
LabelFontSize,
Brushes.White);
if (ActualRatio == 1)
{
EllipseGeometry ellipseGeometry = Geometry as EllipseGeometry;
point = new Point(ellipseGeometry.Center.X - formattedText.Width/2,
ellipseGeometry.Center.Y - formattedText.Height/2);
}
else if (ActualRatio == 0)
{
TextedGeometry = null;
return;
}
else
{
Point tangent;
Point half;
Point origin;
PathGeometry pathGeometry = Geometry as PathGeometry;
pathGeometry.GetPointAtFractionLength(.5, out half, out tangent);
pathGeometry.GetPointAtFractionLength(0, out origin, out tangent);
point = new Point(origin.X + ((half.X - origin.X)/2) - formattedText.Width/2,
origin.Y + ((half.Y - origin.Y)/2) - formattedText.Height/2);
}
combinedGeometry.Geometry1 = Geometry;
combinedGeometry.Geometry2 = formattedText.BuildGeometry(point);
TextedGeometry = combinedGeometry;
}
}
:
最初のステップは、カスタムPieDataPoint
クラスを作成することです。次に、新しいジオメトリプロパティ(TextedGeometry
)を使用するためのデフォルトスタイル(generic.xaml辞書内)を作成する必要があります。
<Path Name="Slice" Data="{TemplateBinding local:PieDataPoint.TextedGeometry}"
Fill="{TemplateBinding Control.Background}"
Stroke="{TemplateBinding Control.BorderBrush}"
StrokeMiterLimit="1">
<ToolTipService.ToolTip>
<StackPanel>
<ContentControl Content="{TemplateBinding chartingToolkit:DataPoint.FormattedDependentValue}" />
<ContentControl Content="{TemplateBinding chartingToolkit:PieDataPoint.FormattedRatio}" />
</StackPanel>
</ToolTipService.ToolTip>
</Path>
あなたは「スライス」パスがTextedGeometry
にバインドさそのData
性質を持って見ることができるように: - 少なくとも - そのような何かを
スタイルが含まれている必要があります。
今すぐカスタムPieSeries
で私たちが使用する
Chart
制御を強制することができ、当社の
PieDataPoint
:
public class PieSeries : System.Windows.Controls.DataVisualization.Charting.PieSeries
{
protected override DataPoint CreateDataPoint()
{
return new PieDataPoint();
}
}
はので、あなたのXAMLで使用することができます:
local
は、カスタム名前空間を参照し
<chartingToolkit:Chart Name="pieChart" Title="Pie Series Demo">
<local:PieSeries DependentValuePath="Value" IndependentValuePath="Key"
ItemsSource="{Binding}" IsSelectionEnabled="True" />
</chartingToolkit:Chart>
。それがあなたを助けることを願っています。
関連する問題
- 1. jqPlot円グラフのパーセントと値を表示
- 2. ハイチャート(円グラフ)の最高値の表示
- 3. obiee11gの円グラフでパーセンテージと値の両方を表示する方法
- 4. ライブjsonデータを円グラフと棒グラフで表示する方法
- 5. dc.jsのグラフ外の円グラフの値にマウスを表示
- 6. Chart.js円グラフのセクションを非表示にする方法
- 7. Pyplot別の円グラフのグラフ表示
- 8. Chart.jsの値を表示する円グラフの部分
- 9. ブラックベリーアプリケーションで円グラフを表示する方法
- 10. サイズ/円グラフでフォルダを表示する方法/フリーウェア
- 11. ズーム可能な円グラフでツールチップを表示する方法
- 12. D3円グラフの各選択
- 13. 円グラフの値
- 14. chartjの円グラフ以外の値を表示
- 15. 円グラフのタイトルの代わりに値を表示
- 16. すべてのバー、円グラフのAmChartsにLegendTextを表示する方法
- 17. Chart.js - 円グラフにデータラベルのリーダーラインを表示
- 18. MPAndroidChart円グラフで別のデータセットを表示
- 19. pieSliceTextをGoogle円グラフの外に表示
- 20. ASP.NET円グラフでYValueMembersのみを表示
- 21. chart.js:円グラフの外側ラベルの表示
- 22. 円グラフセクター内の値を表示する方法
- 23. ハイチャートを使用して複数の円グラフを表示する方法
- 24. 円グラフで円グラフが表示されない
- 25. ADF円グラフの表示回数
- 26. CorePlot円グラフ:X軸とY軸を非表示にする方法は? IOSの
- 27. ハイチャートのデータラベルが円グラフの各スライスの前に表示されない
- 28. スワップ円グラフの値
- 29. Android:毎分の値のグラフを表示する方法
- 30. 配列の値から円グラフを作成する方法は?
非常に詳細な回答ありがとうございます。 –
@NguyenMinhDat歓迎ですが、私の答えがあなたの質問に合っていると思うなら、それを正解とマークしてください –