Я пытаюсь использовать функциональные возможности диаграммы, предоставляемые платформой .NET, но мне нужен результат, который я не могу сделать на самом деле.
Мой код:
string themeChart = @"<Chart>
<ChartAreas>
<ChartArea Name=""Default"" _Template_=""All"">
<AxisY>
<LabelStyle Font=""Verdana, 12px"" />
</AxisY>
<AxisX LineColor=""64, 64, 64, 64"" Interval=""1"">
<LabelStyle Font=""Verdana, 12px"" />
</AxisX>
</ChartArea>
</ChartAreas>
</Chart>";
var dataChart = new Chart(width: 1000, height: 300, theme: themeChart).AddSeries(
chartType: "column",
xValue: arrayXVal,
yValues: arrayYVal)
.AddTitle("ChartTitle")
.GetBytes("png");
return File(dataChart, "image/png");
Моя карта похожа на эту картинку.
Мне нужно сделать такую диаграмму:
Значения могут быть над столбцами или «внутри», как на втором изображении.
Большое спасибо!
EDIT: я нашел эту страницу: страница W3School. Вы можете видеть, что есть изображение, которое иллюстрирует то, что мне нужно. Но код не указан...
EDIT 2: я также нашел эту страницу: Отображение данных на диаграмме с помощью веб-страниц ASP.NET (Razor), но код не предоставляется.
Ответ: Благодаря вашим ответам я попытался использовать DataVisualization.Charting
и почти без изменений по сравнению с моим предыдущим кодом дал приемлемый результат.
Вы можете найти мой полный код здесь: Bitmap image = new Bitmap(1000, 300); Графика g = Graphics.FromImage(изображение); var chart1 = новый System.Web.UI.DataVisualization.Charting.Chart(); диаграмма1.Ширина = 1000; диаграмма1.Высота = 300; chart1.ChartAreas.Add("XAxis").BackColor = System.Drawing.Color.White; chart1.Titles.Add("Название диаграммы"); chart1.Series.Add("Ось x");
for (int i = 0; i < 24; i++)
{
chart1.Series["xAxis"].Points.AddXY(i + " h", arrayValues[i]);
}
chart1.Series["xAxis"].IsValueShownAsLabel = true;
chart1.Series["xAxis"].LabelForeColor = Color.Black;
chart1.ChartAreas[0].AxisX.Interval = 1;
chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.LightGray;
chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.LightGray;
chart1.BackColor = Color.White;
MemoryStream imageStream = new MemoryStream();
chart1.SaveImage(imageStream, ChartImageFormat.Png);
chart1.TextAntiAliasingQuality = TextAntiAliasingQuality.High;
Response.ContentType = "image/png";
imageStream.WriteTo(Response.OutputStream);
g.Dispose();
image.Dispose();
return null;
Большое спасибо Балти за ответ.
Я отдам награду Балти, потому что это первый и полный ответ.
Я отмечу ответ Адитьи Кумаранчат как «основной ответ», потому что он более подробно описывает шаги, которые необходимо выполнить.