所以,我的问题是这个。我必须将堆积柱形图插入Web应用程序。它不会与之交互,只需要偶尔显示和刷新即可。
最基本的是,这是我在控制器类中用于生成简单条形图的代码。
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;
}
答案 0 :(得分:1)
经过大量的尝试,错误和搜索,我找到了答案。我从来没有找到我需要做的简单例子,但是我能够从发现的部分中组合出一个解决方案。
要做我想做的事情,我需要在控制器类的actionresult方法的末尾添加以下代码:
System.IO.MemoryStream chartStream = new System.IO.MemoryStream();
workChart.SaveImage(chartStream, ChartImageFormat.Png);
return File(chartStream.ToArray(), ("chart/png"));