ÃàÀº Â÷Æ®ÀÇ °¡ÀåÀÚ¸®¿¡ Ç¥½ÃµÇ´Â ´«±ÝÀÌ´Ù. 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Á¡ÀÌ ¾ø´Ù. ´ëºÎºÐÀÇ
¼Ó¼ºÀº ÀÌ·± ½ÄÀ¸·Î °ªÀ» ¹Ù²ã°¡¸ç Â÷ÀÌÁ¡À» °üÂûÇØ º¸¸é ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖ´Ù. ±Û¸¸ Àо µûºÐÇÏÁö¸¸
¼Ó¼ºÀ» ¹Ù²ã °¡¸ç ½Ç½ÀÇØ º¸¸é ³ª¸§ Àç¹Ìµµ ÀÖ°í ¼Ó¼ºÀÇ Àǹ̸¦ ºÐ¸íÈ÷ ¾Ë ¼ö ÀÖ´Ù.