4°³ÀÇ Ãà

ÃàÀº Â÷Æ®ÀÇ °¡ÀåÀÚ¸®¿¡ Ç¥½ÃµÇ´Â ´«±ÝÀÌ´Ù. ChartArea¿¡ ¼Ò¼ÓµÇ¸ç Axes ¼Ó¼ºÀÇ Ä÷º¼Ç ÆíÁý±â¸¦ ¿­¾î º¸¸é ÃàÀÇ ¸ñ·ÏÀÌ ³ªÅ¸³­´Ù.

°¡·ÎÂÊÀÌ XÃàÀÌ°í ¼¼·ÎÂÊÀÌ YÃàÀÌ¸ç ¾çÂÊÀ¸·Î °¢°¢ ºÙÀÏ ¼ö ÀÖ¾î ¿¡¸®¾î´ç ÃÑ 4°³ÀÇ ÃàÀÌ ÀÖ´Ù. ÆíÁý±â¿¡¼­ º¸´Ù½ÃÇÇ 4°³ÀÇ ÃàÀÌ ¹Ì¸® µî·ÏµÇ¾î ÀÖÀ¸¸ç ´õ ¸¸µé°Å³ª »èÁ¦ÇÒ ¼ö´Â ¾ø°í ¼Ó¼º¸¸ Á¶Á¤ÇÒ ¼ö ÀÖ´Ù.

ÃàÀÇ ¿©·¯ °¡Áö ¼Ó¼ºÀ» Å×½ºÆ®ÇØ º¸±â À§ÇØ °¡·ÎÃàÀ» ½Ã°£À¸·Î ÇÏ´Â Â÷Æ®¸¦ ¸¸µé¾î º¸ÀÚ. 

 

private void Form1_Load(object sender, EventArgs e)

{

       chart1.Legends[0].Enabled = false;

       Random R = new Random(100);

       DateTime dt = new DateTime(2020, 10, 1, 9, 0, 0);

       for (int i = 0;i<20;i++)

       {

                  chart1.Series[0].Points.AddXY(dt, R.Next(10, 100));

                  dt = dt.AddMinutes(1);

       }

}

 

¿ÀÀü 9½ÃºÎÅÍ 1ºÐ °£°ÝÀ¸·Î 10~100 »çÀÌÀÇ ³­¼ö·Î Â÷Æ®¸¦ ±×·È´Ù. ¼¼·ÎÃàÀº Á¡¼ö¶ó°í »ý°¢ÇÏ¸é µÈ´Ù. ÀÌ ÄÚµå ¾Æ·¡ÂÊ¿¡ ¼Ó¼ºÀ» Á¶Á¤ÇÏ´Â Äڵ带 ÀÛ¼ºÇÏ¿© ½Ç½ÀÀ» ÁøÇàÇÑ´Ù.

¾Æ·¡ÂÊÀÌ XÃàÀÌ¸ç ½Ã°£À» º¸¿© ÁØ´Ù. ¿ÞÂÊÀÌ YÃàÀ̸ç 0 ~ 100±îÁö 20 °£°ÝÀ¸·Î °ªÀ» Ç¥½ÃÇÑ´Ù. Ãà¿¡´Â ´ÙÀ½ ¿ä¼Ò°¡ ¹èÄ¡µÈ´Ù.

 

ƽ¸¶Å© : Á¤È®ÇÑ À§Ä¡¸¦ Ç¥½ÃÇÏ´Â ¼±ÀÌ´Ù. À§ ±×¸²ÀÇ YÃàÀ» º¸¸é 20, 40, 60 ÀÚ¸®¿¡ ¿ÞÂÊÀ¸·Î ¾à°£ »ßÁ® ³ª¿Â Á÷¼±ÀÌ Æ½¸¶Å©ÀÌ´Ù.

·¹À̺í : À§Ä¡³ª °ªÀ» ¼³¸íÇÏ´Â ¹®ÀÚ¿­ÀÌ´Ù. YÃàÀÇ 20, 40À̳ª XÃàÀÇ ³¯Â¥°¡ ·¹À̺íÀÌ´Ù. ÁÖ±â, Æ÷¸Ë, ¼Ó¼º µî¿¡ µû¶ó ¸ð¾çÀÌ ÃµÂ÷ ¸¸º°·Î ´Þ¶óÁø´Ù.

±×¸®µå : Â÷Æ®ÀÇ ÇÃ·Ô ¿µ¿ª¿¡ Ç¥½ÃµÇ´Â ¹ÙµÏÆÇ ¸ð¾çÀÇ °ÝÀÚÀÌ´Ù. ƽ¸¶Å©°¡ ÇÃ·Ô ¿µ¿ªÀ¸·Î È®ÀåµÈ °ÍÀÌ´Ù.

 

µðÆúÆ®·Î XÃàÀº ¾Æ·¡ÂÊ, YÃàÀº ¿ÞÂʸ¸ Ç¥½ÃµÇ¾î ÀÖ¾î 2°³ÀÇ ÁÖÃุ º¸ÀδÙ. ¿À¸¥Âʰú À§ÂÊ¿¡µµ º¸Á¶ÃàÀÌ ÀÖÁö¸¸ ¼û°ÜÁ® ÀÖ´Ù. ÀÌ Ã൵ º¸À̵µ·Ï ÇØ º¸ÀÚ. ¾Æ·¡ÂÊ¿¡ ´ÙÀ½ Äڵ带 ÀÛ¼ºÇÑ´Ù.

 

chart1.ChartAreas[0].AxisX2.Enabled = AxisEnabled.True;

chart1.ChartAreas[0].AxisY2.Enabled = AxisEnabled.True;

 

AxisX2¿Í AxisY2 ÃàÀÇ Enabled ¼Ó¼ºÀ» True·Î º¯°æÇϸé ÃàÀÌ º¸ÀδÙ. ÀÌ ¼Ó¼ºÀ» Auto·Î ÁöÁ¤Çϸé Â÷Æ®ÀÇ Å¸ÀÔÀ̳ª ½Ã¸®ÁîÀÇ Æ¯¼º¿¡ µû¶ó ÀÚµ¿À¸·Î º¸ÀÓ ¿©ºÎ¸¦ °áÁ¤ÇÑ´Ù. Ãà °´Ã¼ÀÇ À̸§À» ÁöÁ¤ÇÏ´Â ´ë½Å ¿¡¸®¾îÀÇ Axes ¼Ó¼ºÀÇ Ã·ÀÚ¸¦ ÅëÇØ Axes[2], Axes[3]·Î ÄªÇØµµ È¿°ú´Â °°´Ù.

¿À¸¥Âʰú À§ÂÊ¿¡µµ ÃàÀÌ ³ªÅ¸³­´Ù. Â÷Æ®°¡ ¾ÆÁÖ Å©´Ù¸é ÃàÀÌ ¾çÂÊ¿¡ ´Ù ÀÖ´Â °ÍÀÌ º¸±â´Â Æí¸®ÇÏÁö¸¸ ¹øÀ⽺·¯¿ö º¸ÅëÀº ÁÖÃุ Ç¥½ÃÇÑ´Ù.

ÃàÀº Â÷Æ® Ç÷ÔÀ» °¡¸®Áö ¾Êµµ·Ï °¡ÀåÀÚ¸®¿¡ ³õ´Â °ÍÀÌ ¹«³­ÇÏÁö¸¸ ÇÊ¿äÇÏ´Ù¸é ÇÃ·Ô Áß°£¿¡ ³õÀ» ¼öµµ ÀÖ´Ù. ÃàÀÇ Crossing ¼Ó¼ºÀº »ó´ëÃà°ú ±³Â÷ÇÒ ÁöÁ¡À» ÁöÁ¤Çϴµ¥ µðÆúÆ®°ªÀº NaNÀ̸ç ÀÌ °æ¿ì ÀÚµ¿À¸·Î Àû´çÇÑ °÷¿¡ ¹èÄ¡µÈ´Ù.

double.MinValue·Î ÁöÁ¤ÇÏ¸é °¡Àå ÀÛÀº°ª ÂÊ¿¡ ¹èÄ¡µÇ°í double.MaxValue·Î ÁöÁ¤ÇÏ¸é °¡Àå Å«°ªÂÊ¿¡ ¹èÄ¡µÈ´Ù. Áß°£ÀÇ Àû´çÇÑ °ªÀ¸·Î ÁöÁ¤Çϸé ÇØ´ç À§Ä¡¿¡ »ó´ëÃàÀÌ ¹èÄ¡µÈ´Ù. AxisYÀÇ Crossing ¼Ó¼ºÀ¸·Î 50 Á¤µµ·Î ÁöÁ¤ÇØ º¸ÀÚ.

 

chart1.ChartAreas[0].AxisY.Crossing = 50;

 

YÃàÀÇ ¹üÀ§´Â 0 ~ 100±îÁöÀε¥ 50À¸·Î ÁöÁ¤ÇÏ¸é »ó´ëÃàÀÎ XÃàÀÌ µü Áß°£ À§Ä¡¿¡ ¹èÄ¡µÈ´Ù.

ÀÌ·¸°Ô µÇ¸é 50º¸´Ù ´õ ÀÛÀº °ªÀº ¸·´ë°¡ ¾Æ·¡ÂÊÀ¸·Î ±×·ÁÁø´Ù. Crossing ¼Ó¼ºÀ» double.MaxValue·Î ÁöÁ¤Çϸé XÃàÀÌ ÃÖ´ë°ªÀÎ 100 ÀÚ¸®·Î ¿Ã¶ó°¡°í ¸ðµç ¸·´ë´Â ¾Æ·¡ÂÊÀ¸·Î »¸´Â´Ù.

·¹À̺íÀÇ Æ÷¸ËÀº ½Ã¸®ÁîÀÇ Å¸ÀÔ¿¡ µû¶ó ÀÚµ¿À¸·Î °áÁ¤µÇ´Âµ¥ ½Ã°£ÀÎ °æ¿ì´Â ³¯Â¥°¡ µðÆúÆ®·Î µÇ¾î ÀÖ´Ù. ±×·¡¼­ XÃàÀÇ ³¯Â¥°ªÀÌ ¸ðµÎ °°¾Æ ±¸ºÐÀÌ Àß µÇÁö ¾Ê´Â´Ù. ¿¹Á¦ÀÇ Â÷Æ®´Â ºÐ ´ÜÀ§À̹ǷΠ³¯Â¥°¡ ¾Æ´Ñ ½Ã°£ Æ÷¸ËÀ¸·Î Ç¥½ÃÇÏ´Â °ÍÀÌ ´õ ÁÁ´Ù. ·¹À̺íÀÇ Æ÷¸ËÀº ÃàÀÇ LabelStyle.Format ¼Ó¼ºÀ¸·Î ÁöÁ¤ÇÑ´Ù. ´ÙÀ½ Äڵ带 ÀÛ¼ºÇØ º¸ÀÚ.

 

Axis ax = chart1.ChartAreas[0].AxisX;

Axis ay = chart1.ChartAreas[0].AxisY;

ax.LabelStyle.Format = "HH:mm";

 

X, Y ¾çÂÊÀ¸·Î µÎ ÃàÀÇ ¼Ó¼ºÀ» °è¼Ó ¹Ù²ã º¼ °ÍÀ̹ǷΠÁÖÃà¿¡ ´ëÇÑ ÂüÁ¶¸¦ ax, ay·Î ¹Ì¸® ±¸ÇØ µÎ¾ú´Ù. Ä÷º¼Ç¿¡ ÀÇÇÑ ÁßøÀÌ ¿ö³« ±í´Ù º¸´Ï ÀÚÁÖ »ç¿ëÇÏ´Â °´Ã¼´Â ÂüÁ¶¸¦ µû·Î ±¸ÇÑ ÈÄ »ç¿ëÇÏ´Â °ÍÀÌ Æí¸®ÇÏ´Ù. axÀÇ ·¹ÀÌºí Æ÷¸ËÀ» HH:mmÀ¸·Î Ç¥½ÃÇÏ¸é ½Ã:ºÐ ¸¸ ·¹ÀÌºí¿¡ Ç¥½ÃµÈ´Ù.

ÀÌÁ¦ XÃàÀÇ ½Ã°£ÀÌ ¼­·Î ±¸ºÐµÈ´Ù. "HH:mm:ss"·Î ºÙÀ̸é ÃÊ´ÜÀ§µµ ³ªÅ¸³ªÁö¸¸ ÀÌ Â÷Æ®ÀÇ µ¥ÀÌÅͰ¡ ºÐ´ÜÀ§¿©¼­ º° Àǹ̰¡ ¾ø´Ù.

Â÷Æ®´Â 5ºÐ °£°ÝÀ¸·Î ƽ¸¶Å©¿Í ·¹À̺íÀ» Çϳª¾¿ Ç¥½ÃÇÑ´Ù. ¸ðµç X°ª¿¡ ·¹À̺íÀ» ÀÏÀÏÀÌ ¹èÄ¡ÇÒ °ø°£ÀÌ ÃæºÐÇÏÁö ¾Ê¾Æ Àû´çÈ÷ °Ç³Ê ¶Ú´Ù. ½ÉÁö¾î Â÷Æ®¸¦ È®´ëÇϰųª Ãà¼ÒÇØµµ ÀÌ °£°ÝÀ» À¯ÁöÇÑ´Ù. Â÷Æ®ÀÇ Å©±â¿Í ·¹À̺íÀÇ °£°ÝÀº IntervalAutoMode ¼Ó¼ºÀ¸·Î ÁöÁ¤Çϴµ¥ ÀÌ ¼Ó¼ºÀÇ µðÆúÆ®°¡ FixedCountÀ̱⠶§¹®ÀÌ´Ù. ÀÌ ¼Ó¼ºÀ» VariableCount·Î º¯°æÇØ º¸ÀÚ.

 

ax.IntervalAutoMode = IntervalAutoMode.VariableCount;

ay.IntervalAutoMode = IntervalAutoMode.VariableCount;

 

X, Y ¾çÃà ¸ðµÎ °¡º¯ °³¼ö·Î º¯°æÇÏ¿´´Ù. ÀÌ »óÅ¿¡¼­ Â÷Æ®ÀÇ Å©±â¸¦ Á¶Á¤ÇØ º¸¸é Å©±â¿¡ µû¶ó ·¹À̺íÀÇ °£°Ý°ú °³¼ö°¡ ´Þ¶óÁø´Ù.

 

ÀÚ¸®°¡ Á¼À¸¸é ·¹À̺íÀ» Á¶±Ý¸¸ º¸¿© ÁÖ°í ³Ë³ËÇÏ°Ô ³ÐÀ¸¸é °¡±ÞÀû ¸¹Àº ·¹À̺íÀ» º¸¿©ÁØ´Ù. µ¥ÀÌÅÍ °³¼ö°¡ °¡º¯ÀûÀ̰í Â÷Æ® Å©±âµµ ÀÚÁÖ ¹Ù²ï´Ù¸é ÀÌ ¹æ½ÄÀÌ À¯¸®ÇÏÁö¸¸ Àϰü¼ºÀÌ ¾ø´Â °ÍÀº ´ÜÁ¡ÀÌ´Ù.

·¹À̺íÀÇ Áֱ⸦ °­Á¦·Î ÁöÁ¤ÇÏ·Á¸é IntervalType, Interval ¼Ó¼ºÀ» »ç¿ëÇÑ´Ù. IntervalÀº Áֱ⸦ ÁöÁ¤Çϸç ÀÌ °ª¸¶´Ù ·¹À̺íÀÌ Çϳª¾¿ Ç¥½ÃµÈ´Ù. ´Ü °ªÀÌ ½Ã°£À̸é IntervalÀÌ ¾î¶² ´ÜÀ§ÀÎÁö¸¦ IntervalTypeÀ¸·Î ¹àÈù´Ù. IntervalAutoMode´Â ÇØÁ¦ÇÏ°í ´ÙÀ½ Äڵ带 ÀÛ¼ºÇØ º¸ÀÚ.

 

ax.IntervalType = DateTimeIntervalType.Minutes;

ax.Interval = 2;

ay.Interval = 10;

 

XÃàÀº ¸Å 2ºÐ¸¶´Ù ·¹À̺íÀ» Ç¥½ÃÇϰí YÃàÀº ¸Å 10¸¶´Ù ·¹À̺íÀ» Ç¥½ÃÇ϶ó°í Áö½ÃÇß´Ù.

Áö½ÃÇÑ´ë·Î Á¤È®ÇÏ°Ô ·¹À̺íÀÌ Ç¥½ÃµÈ´Ù. ½ÉÁö¾î Å©±â¸¦ ÁÙ¿©µµ ·¹À̺íÀ» Áö±×Àç±×·Î °ãÄ¡°Å³ª ¼¼·Î·Î ¼¼¿ö¼­¶óµµ ÀÌ °£°ÝÀ» À¯ÁöÇÑ´Ù.

ÆûÀ» ´õ ÀÛ°Ô ÁÙÀÌ¸é ·¹ÀÌºí³¢¸® °ãÄ¡±âµµ ÇÑ´Ù. À¢¸¸Çϸé ÀÚµ¿À¸·Î °áÁ¤Çϵµ·Ï ³»¹ö·Á µÎ´Â °ÍÀÌ Æí¸®ÇÏÁö¸¸ °­Á¦·Î ÁöÁ¤Çϸé ÀÌ Áö½Ã¸¦ °¡±ÞÀû Áö۱â À§ÇØ ¾Ö¾´´Ù.

ÃàÀÇ ¸ð¾çÀ» ÁöÁ¤ÇÏ´Â ¼Ó¼ºÀº Á÷°üÀûÀÌ°í ½±´Ù. ´ëºÎºÐ »ö»óÀ̳ª ¼±¸ð¾ç, ŸÀÌÆ² µîÀÇ ¼Ó¼ºÀº ´Ü¼øÇÑ Àå½ÄÀ̾ Äڵ带 ÀÛ¼ºÇØ º¸¸é ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖ´Ù.

 

¼Ó¼º

¼³¸í

Title

ÃàÀÇ Á¦¸ñÀÌ´Ù.

TitleAlignment

Á¦¸ñÀÇ Á¤·Ä ¹æÇâÀÌ´Ù. µðÆúÆ®´Â CenterÀ̸ç Near´Â °¡±î¿î ÂÊ, Far´Â ¸ÕÂÊÀÌ´Ù. Á¿ì, »óÇϰ¡ ¾Æ´Ñ ÀÌÀ¯´Â °¡·Î, ¼¼·Î¿¡ µû¶ó ¹æÇâÀÌ ´Ù¸£°í ¿ì¿¡¼­ Á·ΠÀд ·¹À̾ƿôµµ Àֱ⠶§¹®ÀÌ´Ù.

TitleFont

Á¦¸ñÀÇ ÆùÆ®

TitleForeColor

Á¦¸ñÀÇ »ö»ó

TextOrientation

Á¦¸ñÀÇ ¹æÇâ. µðÆúÆ®´Â Â÷Æ® ŸÀÔ¿¡ µû¶ó ÀÚµ¿À¸·Î °áÁ¤ÇÏ´Â AutoÀÌµÇ ¼öÆò, 90µµ ȸÀü, 270µµ ȸÀü, ½×±â µîÀÌ ÀÖ´Ù.

ArrowStyle

Ãà ³¡ÀÇ È­»ìÇ¥ ¸ð¾çÀÌ´Ù. µðÆúÆ®´Â NoneÀ̸ç LineÀº È­»ìÇ¥ ¸ð¾ç, TriangleÀº »ï°¢Çü, ShartTriangleÀº ±æÂßÇÑ »ï°¢ÇüÀÌ´Ù.

Enabled

»ç¿ë ¿©ºÎÀÌ´Ù. ÀÌ °ªÀÌ falseÀ̸é ÃàÀÇ ¿ä¼Ò´Â ¸ðµÎ Ç¥½ÃµÇÁö ¾Ê´Â´Ù. ÁÖÃ൵ ¾ø¾Ö ¹ö¸± ¼ö ÀÖ´Ù.

LineColor

¼±»ö»ó

LineWidth

¼± ±½±â

LineDashStyle

¼± ¸ð¾ç

IsReserved

ÃàÀÇ ¹æÇâÀ» ¹Ý´ë·Î µÚÁý´Â´Ù.

IsMarginVisible

Ãà ³¡¿¡ ¾à°£ÀÇ ¸¶ÁøÀ» ÁÙ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù.

 

¼±¸ð¾çÀ» ¹Ù²Ù°í Ãà¿¡ Á¦¸ñÀ» ºÙ¿© º¸ÀÚ.

 

ax.LineColor = Color.Green;

ax.LineWidth = 3;

ax.ArrowStyle = AxisArrowStyle.Triangle;

ay.ArrowStyle = AxisArrowStyle.Lines;

 

ax.Title = "³¯Â¥";

ay.Title = "Á¡¼ö";

ay.TextOrientation = TextOrientation.Horizontal;

IsReversed ¼Ó¼ºÀº ÃàÀÇ ¹æÇâÀ» ¹Ý´ë·Î µÚÁý´Â´Ù. ax.IsReversed = true; ´ëÀÔ¹®À» Ãß°¡Çϸé XÃàÀÇ ½Ã°£ÀÌ Á¿¡¼­ ¿ì·Î°¡ ¾Æ´Ñ ¿ì¿¡¼­ Á·ΠÁõ°¡ÇÑ´Ù.

IsMarginVisible ¼Ó¼ºÀº ³¡ ºÎºÐ¿¡ ¾à°£¾¿ ¿©¹éÀ» Áִµ¥ µðÆúÆ®´Â trueÀÌ´Ù.

 

ax.IsMarginVisible = false;

ay.IsMarginVisible = false;

 

ÀÌ °ªÀ» false·Î º¯°æÇÏ¸é ¿©¹éÀÌ »ç¶óÁö°í ³Ê¹« ²À ¸Â°Ô ±×·ÁÁ® ´ä´äÇØ º¸ÀδÙ. ´ë°³ÀÇ °æ¿ì´Â ¸¶ÁøÀÌ ÀÖ´Â °ÍÀÌ ¹«³­ÇÏ´Ù. µ¥ÀÌÅÍ ¼ö°¡ ´ë´ÜÈ÷ ¸¹°í °¡ÀåÀÚ¸®ÀÇ °ªÀÌ ±×´ÙÁö Áß¿äÄ¡ ¾Ê´Ù¸é ¸¶ÁøÀ» ¾ø¾Ö´Â °ÍÀÌ º¸±â ÁÁ´Ù.

XÃàÀÇ Ã¹ Ç׸ñÀº ¸·´ë°¡ ¹ÝÀ¸·Î Àß·Á º¸À̰í YÃàÀº 100Á¡ÀÌ ¾ø´Ù. ´ëºÎºÐÀÇ ¼Ó¼ºÀº ÀÌ·± ½ÄÀ¸·Î °ªÀ» ¹Ù²ã°¡¸ç Â÷ÀÌÁ¡À» °üÂûÇØ º¸¸é ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖ´Ù. ±Û¸¸ Àо´Â µûºÐÇÏÁö¸¸ ¼Ó¼ºÀ» ¹Ù²ã °¡¸ç ½Ç½ÀÇØ º¸¸é ³ª¸§ Àç¹Ìµµ ÀÖ°í ¼Ó¼ºÀÇ Àǹ̸¦ ºÐ¸íÈ÷ ¾Ë ¼ö ÀÖ´Ù.