簡體   English   中英

使用zedGraph在C#中繪制圖形

[英]Draw a Graph in C# using zedGraph

我需要創建一個具有以下屬性的圖形:
X軸用於學校名稱。
Y軸用於類名。
在Point(x,y)中,我需要設置一個點,它的顏色代表學生數量(較暗意味着更多的學生)。
我使用ZedGraph(使用示例: http://zedgraph.org/wiki/index.php?title=Gradient-By-Value_Demo ),但我不知道如何把點(並確定它的黑暗-level)在正確的位置(將其與學校的名稱和班級名稱進行比較)。
另外,我不知道如何讓X和Y軸顯示學校的名字和班級的名字。
我怎樣才能做到這一點? (它不必在zedGraph中)。
非常感謝!

問題是ZedGraph以一種奇怪的方式處理文本類型的比例。 因此,如果您同時具有兩種文本類型,則幾乎不可能正確顯示數據。

但你可以稍微欺騙ZG。

整個技巧是使用隱藏比例的坐標顯示數據,同時顯示第二個假比例。

string[] schools = { "A", "B", "C" };
string[] classes = { "cl. 1", "cl. 2", "cl. 3" };

var pane = zg1.GraphPane;
Random x = new Random();

// Hide the basic scale, show the second with text labels
pane.X2Axis.Type = AxisType.Text;
pane.X2Axis.IsVisible = true;
pane.Y2Axis.Type = AxisType.Text;
pane.Y2Axis.IsVisible = true;
pane.XAxis.Scale.IsVisible = false;
pane.YAxis.Scale.IsVisible = false;

pane.X2Axis.Scale.TextLabels = schools;
pane.Y2Axis.Scale.TextLabels = classes;

// Main problem - synchronize the scales correctly            
pane.XAxis.Scale.Min = -0.5;
pane.XAxis.Scale.Max = schools.Count() - 0.5;
pane.YAxis.Scale.Min = -0.5;
pane.YAxis.Scale.Max = classes.Count() - 0.5;

pane.YAxis.MajorGrid.IsZeroLine = false;

// generate some fake data
PointPairList list = new PointPairList();
   for(int i=0;i<schools.Count();i++)
      for (int j = 0; j < classes.Count(); j++)
      {
          list.Add(new PointPair(i, j, x.Next(30)));
      }

   var pointsCurve = pane.AddCurve("", list, Color.Transparent);
   pointsCurve.Line.IsVisible = false;
   // Create your own scale of colors.
   pointsCurve.Symbol.Fill = new Fill(new Color[] { Color.Blue, Color.Green, Color.Red });
   pointsCurve.Symbol.Fill.Type = FillType.GradientByZ;
   pointsCurve.Symbol.Fill.RangeMin = 0;
   pointsCurve.Symbol.Fill.RangeMax = 30;
   pointsCurve.Symbol.Type = SymbolType.Circle;

            pane.AxisChange();
            zg1.Refresh();

我在我的項目中沒有做到這一點,但我確實根據一些標准改變了顏色。 你應該很容易修改。 在圖形類中查看stochfit.sourceforge.net中的svn depot。 您可能還想查看我的庫中的zedgraph版本,修復了一些圖像捕獲和縮放錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM