mcpField
S
syncfusion-winforms-smith-chart

syncfusion-winforms-smith-chart

github.com/syncfusion数据与数据库276 次安装1 周前更新
代码仓库

关于 syncfusion-winforms-smith-chart

此技能介绍 Syncfusion Windows Forms 的 Smith Chart 控件,面向需要分析传输线及高频电路参数的开发者。它支持阻抗和导纳视图,并提供数据系列、标记、图例、提示及坐标轴配置指南。

主要功能

  1. 01阻抗与导纳渲染模式
  2. 02数据绑定与多系列绘图
  3. 03可配置标记和数据标签
  4. 04交互式图例与系列切换
  5. 05自定义工具提示
  6. 06坐标轴与网格线设置

适用场景

  1. 01分析射频电路阻抗
  2. 02可视化传输线参数
  3. 03比较多个电路配置
  4. 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.md
axes-configuration.md
data-markers.md
getting-started.md
legend-customization.md
performance-optimization.md
rendering-modes.md
series-configuration.md
user-interactions.md

详细介绍

实现史密斯圆图

Syncfusion Windows Forms 史密斯圆图是高频电路应用中最实用的数据可视化工具之一。它包含两组圆,用于绘制传输线参数。

何时使用此技能

当用户需要执行以下操作时,请使用此技能:

  • 可视化传输线的阻抗或导纳
  • 为高频电路应用创建史密斯圆图
  • 绘制归一化电阻和电抗值
  • 显示归一化电导和电纳值
  • 构建 RF 工程可视化工具
  • 分析传输线参数
  • 创建交互式电路分析图表
  • 在圆形图上实现带数据标记的线条序列

关键指标: 用户提及“史密斯圆图”、“SfSmithChart”、“阻抗”、“导纳”、“传输线”、“电抗”、“电阻”、“RF”、“高频电路”,或提到电路参数可视化。

组件概述

Syncfusion Windows Forms 史密斯圆图(SfSmithChart)是一种专用数据可视化控件,用于绘制传输线参数。它由两组圆构成:

  • 阻抗模式: 归一化电阻圆和电抗曲线
  • 导纳模式: 归一化电导圆和电纳曲线
主要功能
  • 双渲染模式: 在阻抗和导纳可视化之间切换
  • 线条序列: 使用可自定义的线条样式和颜色绘制数据
  • 数据标记: 支持多种形状(圆形、矩形、菱形)和图像
  • 交互式图例: 切换序列可见性,并自定义位置
  • 工具提示: 可配置自定义格式的工具提示
  • 坐标轴自定义: 控制主网格线、次网格线、标签和样式
  • 数据标签: 智能对齐,并自动添加连接线
  • 外观: 多种调色板和全面的样式控制
  • 性能: 使用 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 属性
PropertyTypeDescription
Textstring显示在顶部的图表标题
RenderingModeRenderingMode阻抗或导纳模式
HorizontalAxisChartAxis水平轴配置
RadialAxisChartAxis径向轴配置
SeriesSeriesCollection图表系列集合
LegendChartLegend图例配置
Radiusfloat圆直径(0.1 到 1.0,默认值为 0.95)
BackColorColor图表背景色
LineSeries 属性
PropertyTypeDescription
DataSourceobject要绑定的数据集合
ResistanceMemberstring电阻/电导值对应的属性
ReactanceMemberstring电抗/电纳值对应的属性
InteriorColor线条颜色
StrokeWidthint线条粗细
DashStyleDashStyle线条样式(Solid、Dash、Dot 等)
MarkerVisiblebool显示/隐藏数据标记
MarkerTypeMarkerType标记形状
TooltipVisiblebool启用工具提示
LegendTextstring图例中显示的文本
Visiblebool显示/隐藏系列
ArrangeByIndexbool按索引绘制,而非按电阻排序
ChartAxis 属性
PropertyTypeDescription
MajorGridlinesVisiblebool显示/隐藏主网格线
MinorGridlinesVisiblebool显示/隐藏次网格线
MinorGridlinesCountint主网格线之间的次网格线数量
LabelPlacementLabelPlacement图表区域内侧或外侧
LabelIntersectActionLabelIntersectActions处理重叠标签(Hide)
AxisLineVisiblebool显示/隐藏轴线

常见用例

高频电路分析

使用阻抗模式分析 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 显示图例

评论

支持 Markdown