c# - 控制器类中的堆积柱形图 C#
问题描述
所以,我的问题是这个。我必须将堆积柱形图插入网络应用程序。它不会被交互,它只需要偶尔显示和刷新。
最基本的,这是我在控制器类中用于生成简单条形图的代码。
public ActionResult CharterHelp(int _completed, int _remaining)
{
var workChart = new System.Web.Helpers.Chart(300, 500).AddTitle("Work Items");
workChart .AddSeries(chartType: "column",
xValue: new[] { "Completed", "Remaining" },
yValues: new[] { _completed, _remaining })
.Write("png");
return null;
}
这个先前的代码正在工作。但是,我需要将它呈现为一个堆叠的列,并且......一直发现很难获得一个明确的答案或教程,说明如何制作一个基本的,而不是用于专有图表软件。
我为简单的 C# 和 ASP.net 找到的所有内容都对我有所帮助,但我还没有找到一个可以为我提供与“.write(png)”等效的代码的内容。
我知道我需要使用 SaveImage 方法,但这在我不能将文件存储在静态位置的服务器上用完。我需要即时创建它。
就我对修改后的代码而言,这大约是我所获得的,并且希望能在这个主题上提供任何帮助。
public ActionResult CharterHelp(int _completed, int _remaining)
{
System.Web.UI.DataVisualization.Charting.Chart workChart = new System.Web.UI.DataVisualization.Charting.Chart();
var seriesCompleted = new System.Web.UI.DataVisualization.Charting.Series
{
Name = "Completed",
Color = System.Drawing.Color.Green,
IsVisibleInLegend = false,
IsXValueIndexed = true,
ChartType = SeriesChartType.StackedColumn
};
var seriesRemaining = new System.Web.UI.DataVisualization.Charting.Series
{
Name = "Remaining",
Color = System.Drawing.Color.Red,
IsVisibleInLegend = false,
IsXValueIndexed = true,
ChartType = SeriesChartType.StackedColumn
};
workChart.Series.Add(seriesCompleted);
workChart.Series.Add(seriesRemaining);
seriesRemaining.Points.AddY(_completed);
seriesCompleted.Points.AddY(_remaining);
var chartArea1 = new System.Web.UI.DataVisualization.Charting.ChartArea
{
Name = "ChartArea1"
};
workChart.ChartAreas.Add(chartArea1);
workChart.Width = 300;
workChart.Height = 500;
System.IO.MemoryStream imageStream = new System.IO.MemoryStream();
workChart.SaveImage(imageStream, ChartImageFormat.Png);
return null;
}
解决方案
经过大量的试验、错误和搜索,我找到了答案……我从来没有找到一个简单的例子来说明我需要做什么,但我能够从我找到的部分拼凑出一个解决方案。
为了做我想做的事,我需要在控制器类的 actionresult 方法的末尾添加以下代码:
System.IO.MemoryStream chartStream = new System.IO.MemoryStream();
workChart.SaveImage(chartStream, ChartImageFormat.Png);
return File(chartStream.ToArray(), ("chart/png"));
推荐阅读
- javascript - 如何将选择器分配给赛普拉斯中的对象类
- swift - 如何将 UIStepper 添加到警报内的 TextField?
- python - 使用 matplotlib 的 3D 表面不正确,但等高线图正确
- google-apps-script - 需要 Google Apps 脚本在带有线条和数据标记的 Google 表格上绘制数据
- python - 使用另一个字典中的最大键值作为键创建字典,并使用原始字典中的较低值作为值列表
- php - 为什么 max_input_vars 被忽略?
- amazon-web-services - 用于基于标签的路由关联的 Terraform 嵌套 for 循环
- java - 我不能让 indexOf 方法基于整数工作
- identityserver4 - 在通过 IdentityServer4 自动登录期间未分配会话 ID (sid),这是什么原因?
- javascript - 使用按钮单击和文本框加载 JSON 数据