【发布时间】:2017-04-04 19:45:13
【问题描述】:
我正在尝试以编程方式在堆叠条形图上添加标记,但它们似乎没有出现。实际上,我需要在数据点的平均值上显示一个标记,但现在,我什至无法在图表上显示一个简单的标记。
我做错了什么?
代码:
暗图表作为新图表 chart.ID = DtDistinct.Rows(I)("CourseSisID")
Dim chartareas As New ChartArea
chart.ChartAreas.Add(chartareas)
chart.Series.Clear()
chart.DataBindCrossTable(DtRecords.DefaultView, "Outcomescore", "ShortName", "RecordsPerGroup", "")
chart.ChartAreas(0).AxisY.Interval = 1
chart.ChartAreas(0).AxisY.Enabled = AxisEnabled.False
chart.Palette = ChartColorPalette.None
chart.PaletteCustomColors = New Color() {ColorTranslator.FromHtml("#DF5B59"), ColorTranslator.FromHtml("#E0D773 "), ColorTranslator.FromHtml("#8AAC53"), ColorTranslator.FromHtml("#6A843F")}
chart.ChartAreas(0).AxisX.MajorGrid.Enabled = False
chart.ChartAreas(0).AxisY.MajorGrid.Enabled = False
For Each cs As Series In chart.Series
cs.ChartType = SeriesChartType.StackedBar
cs.Points().FindMaxByValue.MarkerColor = Color.AliceBlue
cs.Points().FindMaxByValue.MarkerSize = 13
cs.Points().FindMaxByValue.MarkerStyle = MarkerStyle.Diamond
Next
pnlcharts.Controls.Add(chart)
这是我正在尝试做的事情的图像。我知道上面的代码不会给我下面的图像,但是在我意识到标记不能出现在条形图上之前,我试图找到上面代码的解决方法。
我想在条形图上看到那条条纹线。条纹线应出现在点的计算平均值上。
因此,我可以做的另一种方法是使用注释,因为堆叠条形图不支持标记。我编写了以下代码来添加注释行,但它仍然没有给我我需要的输出,只是因为我不知道如何为图表上的每个 Y 值执行此操作。
这是我的代码:
暗图表作为新图表 chart.ID = DtDistinct.Rows(I)("CourseSisID")
Dim chartareas 作为新 ChartArea chart.ChartAreas.Add(chartareas)
chart.DataBindCrossTable(DtRecords.DefaultView, "OutcomeScore", "ShortName", "RecordsPerGroup", "Label=RecordsPerGroup")
chart.Palette = ChartColorPalette.None
chart.PaletteCustomColors = New Color() {ColorTranslator.FromHtml("#DF5B59"), ColorTranslator.FromHtml("#E0D773 "), ColorTranslator.FromHtml("#8AAC53"), ColorTranslator.FromHtml("#6A843F")}
chart.ChartAreas(0).AxisX.MajorGrid.Enabled = False
chart.ChartAreas(0).AxisY.MajorGrid.Enabled = False
Dim charttitle As New Title
charttitle.Text = DtDistinct.Rows(I)("CourseSisID")
chart.Titles.Add(charttitle)
For Each cs As Series In chart.Series
cs.ChartType = SeriesChartType.StackedBar
Next
Dim ann1 As New VerticalLineAnnotation()
ann1.AxisX = chart.ChartAreas(0).AxisX
ann1.AxisY = chart.ChartAreas(0).AxisY
ann1.IsSizeAlwaysRelative = False
ann1.X = chart.DataManipulator.Statistics.Mean(chart.Series(0).Name)
ann1.IsInfinitive = True
ann1.ClipToChartArea = chart.ChartAreas(0).Name
ann1.LineColor = Color.Coral
ann1.LineWidth = 3
ann1.AnchorX = 1
ann1.AnchorY = 5
chart.Annotations.Add(ann1)
ann1.LineDashStyle = ChartDashStyle.Dash
pnlcharts.Controls.Add(chart)
这就是我需要的:注意带状线在每个条形中的值是如何不同的。
【问题讨论】:
-
我刚刚看到 StackedBar 图表不支持标记。有没有其他方法可以突出图表上的特定点?
-
看看我前一阵子发的THIS ANSWER。如果它没有帮助,那么你正在尝试做什么的图片会有所帮助。
-
谢谢!我在原始问题中添加了我正在寻找的图像。我想在条形图的计算平均值上显示条纹线或标记。
-
看看
BoxPlot图表类型。它是最接近本机支持您的目标的东西。除此之外,当某些东西不受支持时,您需要发挥创意并对其进行破解......:O)例如,您可以添加一个额外的系列来保存平均值并使用系列的标记来显示平均值,例如你之前提到过。 -
所以,我尝试使用注释,因为不支持系列标记。我在原始问题中添加了详细信息 - 如果有人能指出我做错了什么,那就太好了!谢谢。
标签: asp.net charts stacked-chart