我试图找出是否可以在winforms C#应用程序中找到任何存在的图表。
我有几个整数输入a,b,c ...并且在处理结束时我得到的结果具有宽范围的值,如12,342,445879等。
在图表上,我想只看到从较高尺寸到较低尺寸的层次结构,而在较高和较低线端之间没有相等的比例距离。每个输入只需向下弯曲的阶梯即可。
因此,如果已经存在某种类型的图表工具,则需要两件事情,即从较高到较低的序列排序,其中名称附加到行,而非缩放值以彼此之间的比率显示。
例如我有输入:
int a = 12989;
int b = 324;
int c = 23;
int d = 12;
int e = 3;
和第二个过程结果:
int a = 4;
int b = 25;
int c = 1;
int d = 4;
int e = 14;
我试图在VS列表中使用不同的图表,
private void Size(int a, int b)
{
this.chart1.Series["Series1"].Points.AddXY("a1", a);
this.chart1.Series["Series1"].Points.AddXY("a2", b);
}
但似乎我需要不同的东西。
这是理想的结果:
答案 0 :(得分:2)
是的,这是可能的。
对于x值,实际上有Series
属性IsXValueIndexed
来强制执行未缩放的显示。但是,对于y值没有这样的东西。
(原因可能是未缩放的y值不是真正有用,因为他们可以误导用户关于数据..(..可能或者可能不适用于x值; x值包含,例如,邮政编码或其他ID 应显示为未缩放!)
要解决此问题,您需要将x和y值设置为计数值,并set
Labels
明确的DataPoint
为实际值你有。
示例:
// create an odered list of data:
List<double> data = new List<double>();
for (int i = 0; i < 12; i++) data.Add(rnd.Next(100) * rnd.Next(i * 5));
data = data.OrderByDescending(x => x).ToList();
// now add with dummy x and y-values:
Series s = chart1.Series[0];
for (int i = 0; i < data.Count; i++)
{
int p = s.Points.AddXY(i, data.Count - i); // dummy values
DataPoint dp = s.Points[p];
dp.Label = data[i] +""; // real value, formatted
dp.Tag= data[i]; // real value
}
要摆脱无法显示任何吝啬值的轴,请禁用它们:
chart1.ChartAreas[0].AxisX.Enabled = AxisEnabled.False;
chart1.ChartAreas[0].AxisY.Enabled = AxisEnabled.False;
更多造型:
s.SetCustomProperty("PixelPointWidth","15");
s.Color = Color.DarkSlateGray;
请注意,由于y值实际上只是假人,如果您需要访问它们,则必须使用Labels
并将它们从字符串转换为数字类型。另请注意,如果它们是double
或floats
,则这些字符串将非常长或格式化为短字符串。要保留实际值,您可以将这些值另外存储在每个Tag
的{{1}}字段中。