2017-09-25 62 views
1

我想弄清楚我是否可以在Winforms C#應用程序中找到任何存在的圖表。具有未縮放y值的圖表

我有幾個整數輸入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); 
    } 

,但似乎就像我需要不同的東西。

這裏是理想的結果:

unscaled columns

+0

你爲什麼reverty我澄清descripition ???正確的圖像幾乎沒有希望的結果?!?! – TaW

回答

2

是的,這是可能的。

對於x值,實際上有一個Series屬性IsXValueIndexed來強制執行未縮放的顯示。儘管如此,y值沒有這樣的東西。

(其原因是可能是未縮放的y值是不是真的有用,因爲他們將無疑誤導數據的用戶 ..(..其可以是或可以不是x值的真;包含,比如說,郵政編碼或其他ID x值應顯示未縮放!))

要解決,你需要設置x和y的值來計數值和set每個DataPoint明確的Labels到您的實際值。

例子:

enter image description here

// 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 

} 

爲了擺脫軸,這不能顯示AY meanigful值,禁用它們:

chart1.ChartAreas[0].AxisX.Enabled = AxisEnabled.False; 
chart1.ChartAreas[0].AxisY.Enabled = AxisEnabled.False; 

更多造型:

s.SetCustomProperty("PixelPointWidth","15"); 
s.Color = Color.DarkSlateGray; 

請注意,因爲y值實際上只是假人,如果您需要訪問它們,您將不得不使用Labels並將它們從字符串轉換爲數字類型。還要注意的是,如果他們是doublefloats這些字符串要麼是非常長或格式化以一個簡短的字符串。爲了保持你可以在每個DataPointTag場額外存儲這些實際值..