假设你想创建一个Heatmap它看起来像我的例子here或here恐怕使用Chart
控制用于此目的可能不是最好的选择。
虽然不是不可能用Charttype Point
创建它,它就会有几个问题..
你问DataBinding
,使整个事情更加有效。
您正在使用的DataPoints
名单列表,但:
DataBinding
只有结合值的图表,而不是现成的DataPoints
- 值甚至列出有其limitations:
使用非表格数据源(如列表或数组)时,您可以仅绑定Y值,而不考虑类型的数据绑定方法使用了 。这是因为无法为X值和其他图表属性(如工具提示)指定列。
如果您的X值不重要,这可能不是一个大问题。
嗯,有many ways使用DataBinding
与Chart
,无论是在Chart
并在Series
水平。
而且甚至有一个Points.DataBind重载looks,就好像它是合适的结合颜色是支持扩展属性:
Points.DataBind
同上,再加上:
支持绑定扩展图表属性,如工具提示。
所以结合到DataView
DataTable DT = new DataTable("data");
DT.Columns.Add("xField", typeof(int));
DT.Columns.Add("yFields", typeof(int));
DT.Columns.Add("tipp", typeof(string));
DT.Columns.Add("kolor", typeof(Color));
DataRow row = DT.NewRow();
row["xField"] = 1; row["yFields"] = 1; row["tipp"] = "red"; row["kolor"] = Color.Red;
DT.Rows.Add(row); // ...etc...
DataView DV = new DataView(DT);
chart1.DataSource = DV;
应该像这样工作:但是
someSeries.Points.DataBind(DV, "xField", "yFields",
"MarkerColor=kolor,Color=kolor,Tooltip=tipp,Label=tipp");
,而Labels
和ToolTips
确实得到约束,DataPoint.Color
不会:
这是令人失望的;毕竟DataPoint.Color是bindable
属性。但它被忽略。
Here是支持的属性的列表:
这些属性的列表如下:一个AxisLabel,工具提示,标签, 的LegendText,LegendTooltip和CustomPropertyName(一个 自定义属性的名称)。
结论:据我所知DataBinding
将不让你设置有色DataPoints
。要使用Chart
控件使代码更有效,您可以简单地尝试使用chart1.SuspendLayout
和chart1.ResumeLayout
以使设置完全一致。
但是我会首先考虑不使用Chart控件。
两个例子我在第一段给的链接显示两种可选方法:
第一个是所有关于GDI +绘制热图。这非常简单而且非常有效。 (这篇文章中的细节与你的问题没有关系。)对于简单的缩放,我建议绘制一个Bitmap
,你将其分配给Panel
或PictureBox
;在ClientSize
中创建它并将Panel.ImageLayout
(或PictureBox.SizeMode
)设置为Stretch
。
第二个示例使用热图中的大'像素'作为DataGridView
的Cells
...
查看方法的第二个链接,创建一个不错的List<Color>
!
来源
2015-10-12 13:10:21
TaW
你使用哪种图表类型?这将有助于更好地了解问题,看看结果如何。 – TaW
现在我只是使用点图,但我需要花一些时间来确定哪种风格最适合热图。一旦我回到我的电脑,我可以张贴当前外观的屏幕截图。 – Ian
你解决了你的问题吗? – TaW