syncfusion-winforms-smith-chart について
伝送線路や高周波回路のパラメーターを分析する開発者向けに、Syncfusion Windows Forms の Smith Chart コントロールを解説するスキルです。インピーダンスとアドミタンスの表示に加え、系列、マーカー、凡例、ツールチップ、軸の設定を扱います。
主な機能
- 01インピーダンスとアドミタンスの描画モード
- 02データバインディングと複数系列
- 03マーカーとデータラベルの設定
- 04凡例操作と系列表示の切り替え
- 05ツールチップのカスタマイズ
- 06軸とグリッド線の設定
活用シーン
- 01RF 回路のインピーダンス分析
- 02伝送線路パラメーターの可視化
- 03複数の回路構成の比較
- 04チャートデータの対話的な探索
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ syncfusion/ winforms-ui-components-skills --skill syncfusion-winforms-smith-chartインストール後、Claude Code で/syncfusion-winforms-smith-chartを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/appearance-styling.mdaxes-configuration.mddata-markers.mdgetting-started.mdlegend-customization.mdperformance-optimization.mdrendering-modes.mdseries-configuration.mduser-interactions.md詳細
スミスチャートの実装
Syncfusion Windows Forms のスミスチャートは、高周波回路アプリケーションで非常に役立つデータ可視化ツールです。伝送線路のパラメーターをプロットするための、2 種類の円で構成されています。
このスキルを使用する場面
次のようなニーズがある場合に、このスキルを使用してください。
- 伝送線路のインピーダンスまたはアドミタンスを可視化する
- 高周波回路アプリケーション向けのスミスチャートを作成する
- 正規化した抵抗値とリアクタンス値をプロットする
- 正規化したコンダクタンス値とサセプタンス値を表示する
- RF エンジニアリング向けの可視化ツールを構築する
- 伝送線路のパラメーターを分析する
- インタラクティブな回路解析チャートを作成する
- 円形プロットにデータマーカー付きの線シリーズを実装する
主な目印: ユーザーが「スミスチャート」、「SfSmithChart」、「インピーダンス」、「アドミタンス」、「伝送線路」、「リアクタンス」、「抵抗」、「RF」、「高周波回路」に言及する、または回路パラメーターの可視化について問い合わせる場合です。
コンポーネントの概要
Syncfusion Windows Forms のスミスチャート(SfSmithChart)は、伝送線路のパラメーターをプロットするための特殊なデータ可視化コントロールです。2 種類の円群で構成されています。
- インピーダンスモード: 正規化した抵抗円とリアクタンス曲線
- アドミタンスモード: 正規化したコンダクタンス円とサセプタンス曲線
主な機能
- 2 種類の描画モード: インピーダンスとアドミタンスの可視化を切り替えます
- 線シリーズ: カスタマイズ可能な線種と色でデータをプロットします
- データマーカー: 画像にも対応したさまざまな形状(円、長方形、ひし形)
- インタラクティブな凡例: シリーズの表示を切り替え、位置をカスタマイズできます
- ツールチップ: 書式をカスタマイズできるツールチップを設定できます
- 軸のカスタマイズ: 主グリッド線と補助グリッド線、ラベル、スタイルを制御できます
- データラベル: 自動的に引き出し線を配置し、適切に整列します
- 外観: 複数のカラーパレットと詳細なスタイル設定に対応します
- パフォーマンス: BeginUpdate/EndUpdate により大規模なデータセット向けに最適化されています
ドキュメントとナビゲーションガイド
はじめに
📄 参照: references/getting-started.md
- アセンブリの配置と NuGet パッケージのインストール
- Visual Studio デザイナーを使ったスミスチャートの追加
- コードによるスミスチャートの追加
- 必要な名前空間のインポート
- DataSource、ResistanceMember、ReactanceMember によるデータバインディング
- シリーズへのデータポイントの直接追加
- 基本的なチャートの初期化と初回描画
- Text プロパティを使用したタイトルの追加
シリーズとデータの設定
📄 参照: references/series-configuration.md
- LineSeries の作成と設定
- データバインディングのプロパティ(DataSource、ResistanceMember、ReactanceMember)
- 線のカスタマイズ(Interior の色、StrokeWidth、DashStyle)
- シリーズの表示制御
- ArrangeByIndex プロパティを使用したデータのプロット
- 複数シリーズのサポートと管理
データマーカー
📄 参照: references/data-markers.md
- MarkerVisible プロパティを使用したマーカーの有効化
- マーカーの形状(Rectangle、Circle、Diamond など)
- マーカーのカスタマイズ(サイズ、色、枠線)
- カスタムマーカーとしての画像の使用
- データラベルの概要と適切な配置
- ラベルの重なりを避けるための引き出し線の自動生成
軸の設定
📄 参照: references/axes-configuration.md
- 抵抗値/コンダクタンス値を示す水平軸
- リアクタンス値/サセプタンス値を示す放射軸
- 主グリッド線の表示とスタイル
- 補助グリッド線の設定と数
- 軸線の外観のカスタマイズ
- ラベルの配置(チャート領域の内側/外側)
- 重なり合うラベルに対するラベル交差時の動作
- カスタムラベルテキスト用の LabelCreated イベント
凡例のカスタマイズ
📄 参照: references/legend-customization.md
- 系列の凡例表示とLegendText
- DockPosition(Top、Bottom、Left、Right)による位置指定
- 凡例アイコンの種類とサイズ
- 配置オプション(Near、Far、Center)
- スタイルのカスタマイズ(色、枠線、間隔)
- 系列の表示を切り替えるインタラクティブな操作
- 複数の系列に対するスクロールバーとWrapItems
外観とスタイル
📄 参照: references/appearance-styling.md
- チャートのカラーパレット(Metro、Natureなど)
- 系列単位のパレットのカスタマイズ
- チャート領域の背景と枠線のスタイル設定
- 円の半径の調整
- BackColorおよびChartAreaBackColorプロパティ
ユーザー操作
📄 参照: references/user-interactions.md
- ツールチップの表示と設定
- プレースホルダーを使用したツールチップの書式設定
- 外観をカスタマイズするTooltipOptions
- 動的なコンテンツを設定するTooltipOpeningイベント
- ツールチップのテキストとスタイルのカスタマイズ
レンダリングモード
📄 参照: references/rendering-modes.md
- インピーダンスモードとアドミタンスモード
- RenderingModeプロパティの設定
- 抵抗/リアクタンス円について
- コンダクタンス/サセプタンス円について
- モードごとのデータの解釈
パフォーマンスの最適化
📄 参照: references/performance-optimization.md
- BeginUpdateおよびEndUpdateメソッド
- 大規模データセット向けの最適化
- 複数のポイントを追加する際のベストプラクティス
- 更新中のチャートの再描画を一時停止
クイックスタートの例
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.ObjectModel;
using Syncfusion.WinForms.SmithChart;
public class SmithChartExample : Form
{
public SmithChartExample()
{
// Create Smith Chart
SfSmithChart chart = new SfSmithChart();
chart.Text = "Impedance Transmission";
chart.BackColor = Color.White;
// Configure axes
chart.HorizontalAxis.MinorGridlinesVisible = true;
chart.RadialAxis.MinorGridlinesVisible = true;
// Create series with data
LineSeries series = new LineSeries();
series.MarkerVisible = true;
series.LegendText = "Transmission1";
series.TooltipVisible = true;
series.DataSource = GetTransmissionData();
series.ResistanceMember = "Resistance";
series.ReactanceMember = "Reactance";
// Add series to chart
chart.Series.Add(series);
// Show legend
chart.Legend.Visible = true;
// Add chart to form
this.Controls.Add(chart);
}
private ObservableCollection<TransmissionData> GetTransmissionData()
{
var data = new ObservableCollection<TransmissionData>();
data.Add(new TransmissionData { Resistance = 0, Reactance = 0.05 });
data.Add(new TransmissionData { Resistance = 0.3, Reactance = 0.1 });
data.Add(new TransmissionData { Resistance = 0.5, Reactance = 0.2 });
data.Add(new TransmissionData { Resistance = 1.0, Reactance = 0.4 });
data.Add(new TransmissionData { Resistance = 2.0, Reactance = 0.5 });
data.Add(new TransmissionData { Resistance = 3.5, Reactance = 0.0 });
data.Add(new TransmissionData { Resistance = 5, Reactance = -1.0 });
data.Add(new TransmissionData { Resistance = 10, Reactance = -10 });
return data;
}
}
public class TransmissionData
{
public double Resistance { get; set; }
public double Reactance { get; set; }
}
一般的なパターン
DataSourceを使用したデータの追加
データオブジェクトのコレクションがある場合:
// Create data model
var model = new SmithChartModel();
// Configure series
LineSeries series = new LineSeries();
series.DataSource = model.TransmissionData;
series.ResistanceMember = "Resistance"; // Property name for X-axis
series.ReactanceMember = "Reactance"; // Property name for Y-axis
sfSmithChart.Series.Add(series);
データポイントの直接追加
事前に定義されたコレクションを使用しない動的データの場合:
LineSeries series = new LineSeries();
series.MarkerVisible = true;
// Add individual points
series.Points.Add(0.5, 0.2);
series.Points.Add(1.0, 0.4);
series.Points.Add(2.0, 0.5);
sfSmithChart.Series.Add(series);
レンダリングモードの切り替え
インピーダンスとアドミタンスを切り替えます:
// Impedance mode (default) - shows resistance and reactance
sfSmithChart.RenderingMode = RenderingMode.Impedance;
// Admittance mode - shows conductance and susceptance
sfSmithChart.RenderingMode = RenderingMode.Admittance;
系列の外観のカスタマイズ
LineSeries series = new LineSeries();
series.Interior = Color.Red; // Line color
series.StrokeWidth = 3; // Line thickness
series.DashStyle = DashStyle.Dash; // Line pattern
series.MarkerVisible = true; // Show markers
series.MarkerType = MarkerType.Circle; // Marker shape
series.MarkerBackColor = Color.Blue; // Marker fill
大規模データセットのパフォーマンス
sfSmithChart.BeginUpdate(); // Suspend repainting
LineSeries series = sfSmithChart.Series[0] as LineSeries;
for (int i = 0; i < 1000; i++)
{
series.Points.Add(GetResistance(i), GetReactance(i));
}
sfSmithChart.EndUpdate(); // Resume and repaint once
主要なプロパティ
SfSmithChartプロパティ
| プロパティ | 型 | 説明 |
|---|---|---|
Text | string | 上部に表示されるチャートのタイトル |
RenderingMode | RenderingMode | インピーダンスモードまたはアドミタンスモード |
HorizontalAxis | ChartAxis | 水平軸の設定 |
RadialAxis | ChartAxis | 放射軸の設定 |
Series | SeriesCollection | チャート系列のコレクション |
Legend | ChartLegend | 凡例の設定 |
Radius | float | 円の直径(0.1~1.0、既定値は0.95) |
BackColor | Color | チャートの背景色 |
LineSeriesプロパティ
| プロパティ | 型 | 説明 |
|---|---|---|
DataSource | object | バインドするデータコレクション |
ResistanceMember | string | 抵抗/コンダクタンス値に使用するプロパティ |
ReactanceMember | string | リアクタンス/サセプタンス値に使用するプロパティ |
Interior | Color | 線の色 |
StrokeWidth | int | 線の太さ |
DashStyle | DashStyle | 線のパターン(Solid、Dash、Dotなど) |
MarkerVisible | bool | データマーカーの表示/非表示 |
MarkerType | MarkerType | マーカーの形状 |
TooltipVisible | bool | ツールチップを有効化 |
LegendText | string | 凡例に表示するテキスト |
Visible | bool | 系列の表示/非表示 |
ArrangeByIndex | bool | インデックス順にプロットするか、抵抗値順に並べてプロットするか |
ChartAxisプロパティ
| プロパティ | 型 | 説明 |
|---|---|---|
MajorGridlinesVisible | bool | 主グリッド線の表示/非表示 |
MinorGridlinesVisible | bool | 補助グリッド線の表示/非表示 |
MinorGridlinesCount | int | 主グリッド線の間に表示する補助グリッド線の数 |
LabelPlacement | LabelPlacement | チャート領域の内側または外側 |
LabelIntersectAction | LabelIntersectActions | ラベルの重なりを処理する方法(Hide) |
AxisLineVisible | bool | 軸線の表示/非表示 |
一般的なユースケース
高周波回路解析
インピーダンスモードを使用して、RF 回路の動作を解析します。
- 測定した S パラメーターをプロットします
- 整合回路網の性能を視覚化します
- アンテナのインピーダンス特性を解析します
伝送線路の視覚化
伝送線路のパラメーターを表示します。
- 伝送線路に沿った正規化インピーダンスを表示します
- 反射係数をプロットします
- VSWR 円を視覚化します
複数のトレースの比較
異なる回路構成を比較します。
LegendTextを変えて複数の系列を追加します- 系列ごとに異なる色を使用します
ToggleSeriesVisibleを使って凡例を有効にし、インタラクティブに比較します
インタラクティブなデータ探索
ユーザーに探索ツールを提供します。
- カスタム書式でツールチップを有効にします
- 動的コンテンツには
TooltipOpeningイベントを使用します - 重要なポイントにデータラベルを追加します
- 凡例から系列を切り替えられるようにします
カスタムマーカーの視覚化
特定のデータポイントを強調します。
- 系列ごとに異なるマーカータイプを使用します
- 特別なポイントに画像マーカーを追加します
- マーカーのサイズと色をカスタマイズします
トラブルシューティング
データが表示されない
DataSourceが設定され、有効なデータが含まれていることを確認しますResistanceMemberとReactanceMemberがプロパティ名と完全に一致していることを確認します(大文字と小文字は区別されます)- データ値が有効な範囲内であることを確認します
- 系列が
sfSmithChart.Seriesコレクションに追加されていることを確認します
大規模なデータセットでのパフォーマンスの問題
- ポイントの追加を
BeginUpdate()/EndUpdate()ブロックで囲みます - 不要な場合はマーカーを無効にします(
MarkerVisible = false) - 非常に大規模なデータセットでは、データのサンプリングを検討します
ラベルが重なっている
LabelIntersectAction = LabelIntersectActions.Hideを使って、重なったラベルを自動的に非表示にします- チャートのサイズを調整するか、より広いスペースを確保するために
LabelPlacement.Insideを使用します - スマート配置により、データラベルの重なりが自動的に処理されます
凡例が表示されない
chart.Legend.Visible = trueを設定します- 各系列に
LegendTextプロパティが設定されていることを確認します DockPositionに応じて、凡例を表示するのに十分なスペースがチャートにあることを確認します