作成日: 2022/04/20 最終更新日: 2022/04/20
文書種別
使用方法
詳細
円グラフ(FlexPie)に大量のデータをバインドし、すべての凡例が表示されると、グラフの描画領域が自動縮小され円グラフが非常に小さくなります。
本コンポーネントには、円グラフ部分のサイズ変更や縮小禁止、また凡例を縮小する機能は用意されていないため、このままでは円グラフが見づらくなります。
対応方法として、凡例を非表示にして円グラフの自動縮小を避けるとともに、もう1つ円グラフを用意して同じデータにバインドし、凡例部分のみを活用する策が考えられます。
まず最初のグラフで、Legend.Positionを「None」に設定して凡例を非表示にします。
次いで2番目のグラフで、Legend.Positionを「Top」に設定して凡例をグラフ上部に表示し、この判例部分のみが見えるようにフォームのサイズを調整します。
以下に、この対応コードを設定した例を記載します。

◎サンプルコード(VB)
本コンポーネントには、円グラフ部分のサイズ変更や縮小禁止、また凡例を縮小する機能は用意されていないため、このままでは円グラフが見づらくなります。
対応方法として、凡例を非表示にして円グラフの自動縮小を避けるとともに、もう1つ円グラフを用意して同じデータにバインドし、凡例部分のみを活用する策が考えられます。
まず最初のグラフで、Legend.Positionを「None」に設定して凡例を非表示にします。
次いで2番目のグラフで、Legend.Positionを「Top」に設定して凡例をグラフ上部に表示し、この判例部分のみが見えるようにフォームのサイズを調整します。
以下に、この対応コードを設定した例を記載します。

◎サンプルコード(VB)
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' データテーブルの設定
Dim dt As DataTable = New DataTable()
dt.Columns.Add("Name")
dt.Columns.Add("Value", GetType(System.Int32))
Dim i = 1
For i = 1 To 6
dt.Rows.Add(String.Format("米国{0}", i), 18)
dt.Rows.Add(String.Format("イギリス{0}", i), 16)
dt.Rows.Add(String.Format("中国{0}", i), 18)
dt.Rows.Add(String.Format("フランス{0}", i), 16)
dt.Rows.Add(String.Format("ドイツ{0}", i), 17)
dt.Rows.Add(String.Format("イタリア{0}", i), 15)
Next
' オリジナルの円グラフ
FlexPie1.DataSource = dt
FlexPie1.BindingName = "Name"
FlexPie1.Binding = "Value"
'FlexPie1.Legend.Position = C1.Chart.Position.Bottom
FlexPie1.Legend.Position = C1.Chart.Position.None
' 凡例表示用の円グラフ
FlexPie2.DataSource = dt
FlexPie2.BindingName = "Name"
FlexPie2.Binding = "Value"
FlexPie2.Legend.Position = C1.Chart.Position.Top
' フォームの高さの調整
Dim h2 As Integer = FlexPie2.Height * 0.5
Me.Height = FlexPie1.Height + h2
Me.FormBorderStyle = FormBorderStyle.FixedSingle
End Sub
End Class
◎サンプルコード(C#)
namespace WindowsFormsApplication46
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// データテーブルの設定
var dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("Value", typeof(System.Int32));
for (var i = 1; i <= 6; i++)
{
dt.Rows.Add(string.Format("米国{0}", i), 18);
dt.Rows.Add(string.Format("イギリス{0}", i), 16);
dt.Rows.Add(string.Format("中国{0}", i), 18);
dt.Rows.Add(string.Format("フランス{0}", i), 16);
dt.Rows.Add(string.Format("ドイツ{0}", i), 17);
dt.Rows.Add(string.Format("イタリア{0}", i), 15);
}
flexPie1.DataSource = dt;
flexPie1.BindingName = "Name";
flexPie1.Binding = "Value";
//flexPie1.Legend.Position = C1.Chart.Position.Bottom;
flexPie1.Legend.Position = C1.Chart.Position.None; // 対応策(1/2):凡例の非表示
// 凡例表示用のグラフ
flexPie2.DataSource = dt;
flexPie2.BindingName = "Name";
flexPie2.Binding = "Value";
flexPie2.Legend.Position = C1.Chart.Position.Top; // 対応策(2/2):凡例を上部に表示
// フォームの高さの調整
int h2 = (int)(flexPie2.Height * 0.5);
this.Height = flexPie1.Height + h2;
this.FormBorderStyle = FormBorderStyle.FixedSingle;
}
}
}