如何在C# Plotly中创建包含多系列的图表?
在C# Plotly中绘制多线条/多柱状图的解决方案
确实,C# Plotly里的Chart.Line()、Chart.Bar()这类快捷方法是为单系列数据设计的,只能生成单线条/单组柱状图,这和Python Plotly的直观操作有点不一样,容易让刚上手的开发者疑惑怎么实现多系列图表。不过你找对方向了——核心就是用Chart.Plot()方法配合系列对象列表来实现。
多线条图实现步骤
要创建多线条图,你需要创建多个Scatter对象(每个对象对应一条线),将它们存入列表后传入Chart.Plot()方法,具体示例如下:
// 1. 准备x轴和多组y轴数据 var xValues = Enumerable.Range(1, 500); var housingAges = /* 你的第一组y轴数据,比如IEnumerable<float>类型 */; var housingPrices = /* 你的第二组y轴数据 */; var housingSizes = /* 你的第三组y轴数据 */; // 2. 创建Scatter对象列表,每个对象对应一条线 List<Scatter> scatters = new List<Scatter>(); scatters.Add(new Scatter() { x = xValues, y = housingAges, mode = "lines+markers", // 同时显示线条和标记点 name = "房屋年龄", // 设置系列名称,用于图例区分 Line = new Line { Color = "#1f77b4" } // 可选:自定义线条颜色 }); scatters.Add(new Scatter() { x = xValues, y = housingPrices, mode = "lines", name = "房屋价格", Line = new Line { Color = "#ff7f0e" } }); scatters.Add(new Scatter() { x = xValues, y = housingSizes, mode = "markers", name = "房屋面积", Marker = new Marker { Color = "#2ca02c", Size = 5 } // 自定义标记样式 }); // 3. 可选:配置图表布局(标题、坐标轴标签等) var chartLayout = new Layout.Layout() { Title = "房屋数据多维度分析", Xaxis = new Xaxis { Title = "样本编号" }, Yaxis = new Yaxis { Title = "数值" }, Showlegend = true // 显示图例 }; // 4. 生成并展示图表 var chart = Chart.Plot(scatters, chartLayout); chart.Show();
多柱状图实现步骤
多柱状图的实现逻辑和多线条图一致,只是把Scatter换成Bar对象,还可以通过Barmode配置分组或堆叠显示:
// 1. 准备分类数据和多组数值数据 var regions = new List<string> { "区域A", "区域B", "区域C" }; var sales2023 = new List<double> { 12000, 15000, 9000 }; var sales2024 = new List<double> { 14000, 16500, 10500 }; // 2. 创建Bar对象列表,每个对象对应一组柱子 List<Bar> bars = new List<Bar>(); bars.Add(new Bar() { x = regions, y = sales2023, name = "2023年销售额", Marker = new Marker { Color = "#1f77b4" } }); bars.Add(new Bar() { x = regions, y = sales2024, name = "2024年销售额", Marker = new Marker { Color = "#ff7f0e" } }); // 3. 配置布局,设置柱状图显示模式 var barLayout = new Layout.Layout() { Title = "各区域年度销售额对比", Xaxis = new Xaxis { Title = "区域" }, Yaxis = new Yaxis { Title = "销售额(元)" }, Barmode = "group" // 可选:"group"分组显示,"stack"堆叠显示 }; // 4. 生成并展示图表 var barChart = Chart.Plot(bars, barLayout); barChart.Show();
这种方式的优势在于灵活性极高,你可以为每个数据系列单独定制样式、显示模式,完全满足复杂多系列图表的需求。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

