顯示具有 雷達圖 標籤的文章。 顯示所有文章
顯示具有 雷達圖 標籤的文章。 顯示所有文章

2025年3月4日 星期二

[研究]ASP.NET, WebForm, Chart 雷達圖測試(三)多邊形、不填色、不顯示Y軸線

[研究]ASP.NET, WebForm, Chart 雷達圖測試(三)多邊形、不填色、不顯示Y軸線

2025-03-04

環境:Visual Studio 2019 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

把Chart拖入「設計」畫面,會註冊元件。

Default3.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default3.aspx.cs" Inherits="WebApplication1.Default3" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        
        <asp:Chart ID="Chart1" runat="server">
            <Titles>
                <asp:Title Text="雷達圖1" Font="Arial, 14pt, style=Bold" />
            </Titles>
            <Series>
                <asp:Series Name="Series1" ChartType="Radar">
                </asp:Series>
            </Series>
            <ChartAreas>
                <asp:ChartArea Name="ChartArea1">
                </asp:ChartArea>
            </ChartAreas>
        </asp:Chart>
        
        <asp:Chart ID="Chart2" runat="server"
            Width="400px" Height="400px"
            BorderlineWidth="1" BorderlineColor="Black" BorderlineDashStyle="Solid" Palette="None">
            <%--雷達圖外框線、填色 BorderlineWidth="1" BorderlineColor="Black" BorderlineDashStyle="Solid" Palette="None" --%>
            <Titles>
                <asp:Title Text="雷達圖2" Font="Arial, 14pt, style=Bold" />
            </Titles>
            <ChartAreas>
                <asp:ChartArea Name="ChartArea1">
                   <AxisY LineWidth="0">
                        <MajorTickMark LineWidth="0" /> <%--Y軸不要顯示主要刻度標記--%>
                        <%--AxisY 的 LineWidth 是圓心拉出的線,0表示不畫那條線 --%>
                        <%--AxisY 的 MajorGrid 是繞著圓心的主要線 (圓形線、多邊形線或其他) --%>
                        <%--AxisY 的 MinorGrid 是繞著圓心的主要線 (圓形線、多邊形線或其他) --%>
                        <MajorGrid Enabled="true" LineColor="Orange" />
                    </AxisY>
                </asp:ChartArea>
            </ChartAreas>
            <%--Series 是資料區域--%>
            <Series>
                <%--AreaDrawingStyle=Polygon 是把資料用多邊形線連起來
                BorderWidth="3" BorderColor="Blue" 表連起來的線是藍色、線粗 3 pixels
                Color="Transparent" 表示多邊形內部不填色
                IsValueShownAsLabel="true" 表示顯示資料數值
                LabelForeColor="Red" 表示顯示資料數值用紅色
                --%>
                <asp:Series Name="Series1" ChartType="Radar"
                    CustomProperties="AreaDrawingStyle=Polygon, DrawSideBySide=False"
                    BorderWidth="3" BorderColor="Blue" Color="Transparent"
                    IsValueShownAsLabel="true" LabelForeColor="Red" >
                </asp:Series>
            </Series>
        </asp:Chart>
    </form>
</body>
</html>


Default3.aspx.cs

using System;
using System.Web.UI.DataVisualization.Charting;

namespace WebApplication1
{
    public partial class Default3 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                GenerateRadarChart();
            }
        }
        private void GenerateRadarChart()
        {
            Series series = Chart1.Series["Series1"];
            series.Points.AddXY("A", 87);
            series.Points.AddXY("B", 62);
            series.Points.AddXY("C", 93);
            series.Points.AddXY("D", 54);
            series.Points.AddXY("E", 75);
            series.Points.AddXY("A", 87); // 雷達圖需要閉合

            Series series2 = Chart2.Series["Series1"];
            series2.Points.AddXY("A", 87);
            series2.Points.AddXY("B", 62);
            series2.Points.AddXY("C", 93);
            series2.Points.AddXY("D", 54);
            series2.Points.AddXY("E", 75);
            series2.Points.AddXY("A", 87); // 雷達圖需要閉合
        }
    }
}

下圖

********************************************************************************

增加一行 CODE,右上圖的字母旁黑短線 (主要刻度標記) 就可以消失

                   <AxisY LineWidth="0">
                        <MajorTickMark LineWidth="0" /> <%--Y軸不要顯示主要刻度標記--%>

下圖

********************************************************************************

補充:加大資料數值 (ASPX)

<Series>
        <asp:Series Name="Series1" IsValueShownAsLabel="True" />
    </Series>

改為

<Series>
        <asp:Series Name="Series1" IsValueShownAsLabel="True" Font="Arial, 14pt, style=Bold" />
    </Series>

或 (C#)

Chart1.Series["Series1"].IsValueShownAsLabel = true;
Chart1.Series["Series1"].Font = new System.Drawing.Font("Arial", 14, System.Drawing.FontStyle.Bold);



********************************************************************************

補充:資料點 (ASPX)

<asp:Chart ID="Chart1" runat="server" Width="600px" Height="400px">
    <Series>
        <asp:Series Name="Series1" 
            IsValueShownAsLabel="True" 
            MarkerStyle="Circle" 
            MarkerSize="8" 
            MarkerColor="Blue" />
    </Series>
    <ChartAreas>
        <asp:ChartArea Name="ChartArea1" />
    </ChartAreas>
</asp:Chart>


或 (C#)

Chart1.Series["Series1"].IsValueShownAsLabel = true;

// 設定資料點標記為圓形
Chart1.Series["Series1"].MarkerStyle = System.Web.UI.DataVisualization.Charting.MarkerStyle.Circle;
Chart1.Series["Series1"].MarkerSize = 8; // 調整圓形大小
Chart1.Series["Series1"].MarkerColor = System.Drawing.Color.Blue; // 設定圓形顏色



********************************************************************************

(完)

相關

[研究]ASP.NET, WebForm, Chart 雷達圖測試(二)

[研究]ASP.NET, WebForm, Chart 雷達圖測試(二)

2025-03-04

環境:Visual Studio 2019 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

把Chart拖入「設計」畫面,會註冊元件。

Default2.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default2.aspx.cs" 
    Inherits="WebApplication1.Default2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
       <asp:Panel ID="ChartPanel" runat="server"></asp:Panel>
    </form>
</body>
</html>

Default2.aspx.cs

using System;
using System.Web.UI.DataVisualization.Charting;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                LoadChart();
            }
        }
        private void LoadChart()
        {
            for (int i = 0; i <= 63; i++)
            {
                Chart chart = new Chart
                {
                    Width = 300,
                    Height = 300
                };

                Series series = new Series("Series" + i)
                {
                    ChartType = SeriesChartType.Radar,
                    BorderWidth = 2
                };
                series.Points.AddXY("A", 83);
                series.Points.AddXY("B", 64);
                series.Points.AddXY("C", 95);
                series.Points.AddXY("D", 76);
                series.Points.AddXY("E", 57);
                chart.Series.Add(series);

                ChartArea chartArea = new ChartArea("ChartArea" + i);
                if ((i & 0b100000) == 0)
                    chartArea.AxisX.MajorGrid.Enabled = false; // 隱藏 X 軸網格線
                else
                    chartArea.AxisX.MajorGrid.Enabled = true; // 隱藏 X 軸網格線

                if ((i & 0b010000) == 0)
                    chartArea.AxisY.MajorGrid.Enabled = false; // 隱藏 Y 軸網格線
                else
                    chartArea.AxisY.MajorGrid.Enabled = true; // 隱藏 Y 軸網格線

                if ((i & 0b001000) == 0)
                    chartArea.AxisY.MinorGrid.Enabled = false;
                else
                    chartArea.AxisY.MinorGrid.Enabled = true;

                if ((i & 0b000100) == 0)
                    chartArea.AxisX.MinorGrid.Enabled = false;
                else
                    chartArea.AxisX.MinorGrid.Enabled = true;

                if ((i & 0b000010) == 0)
                    chartArea.AxisX.LineWidth = 0; // 隱藏 X 軸線條
                else
                    chartArea.AxisX.LineWidth = 1; // 隱藏 X 軸線條

                if ((i & 0b000001) == 0)
                    chartArea.AxisY.LineWidth = 0; // 隱藏 Y 軸線條
                else
                    chartArea.AxisY.LineWidth = 1; // 隱藏 Y 軸線條

                chart.ChartAreas.Add(chartArea);
                Label labelA = new Label
                {
                    ID = "LabelA" + i
                };
                Label labelB = new Label
                {
                    ID = "LabelB" + i
                };
                Label labelC = new Label
                {
                    ID = "LabelC" + i
                };
                Label labelD = new Label
                {
                    ID = "LabelD" + i
                };
                Label labelE = new Label
                {
                    ID = "LabelE" + i
                };
                Label labelF = new Label
                {
                    ID = "LabelF" + i
                };
                labelA.Text = "<br />i=" +  i.ToString() + "<br />chartArea.AxisX.MajorGrid.Enabled = " 
                    + chartArea.AxisX.MajorGrid.Enabled.ToString() + "<br />";
                labelB.Text = "chartArea.AxisY.MajorGrid.Enabled = " + chartArea.AxisY.MajorGrid.Enabled.ToString() + "<br />";
                labelC.Text = "chartArea.AxisX.MinorGrid.Enabled = " + chartArea.AxisX.MinorGrid.Enabled.ToString() + "<br />";
                labelD.Text = "chartArea.AxisY.MinorGrid.Enabled = " + chartArea.AxisY.MinorGrid.Enabled.ToString() + "<br />";
                labelE.Text = "chartArea.AxisX.LineWidth = " + chartArea.AxisX.LineWidth.ToString() + "<br />";
                labelF.Text = "chartArea.AxisY.LineWidth = " + chartArea.AxisY.LineWidth.ToString() + "<br />";

                ChartPanel.Controls.Add(labelA);
                ChartPanel.Controls.Add(labelB);
                ChartPanel.Controls.Add(labelC);
                ChartPanel.Controls.Add(labelD);
                ChartPanel.Controls.Add(labelE);
                ChartPanel.Controls.Add(labelF);
                ChartPanel.Controls.Add(chart);
            }
        }
    }
}

下圖

下圖

下圖

下圖,看不出 AxisX.LineWidth = 1 的影響



********************************************************************************

(完)

相關

2025年3月3日 星期一

[研究]ASP.NET, WebForm, Chart 雷達圖測試(一)

[研究]ASP.NET, WebForm, Chart 雷達圖測試(一)

2025-03-03

環境:Visual Studio 2019 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

把Chart拖入「設計」畫面,會註冊元件。

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
    Inherits="WebApplication1.Default" %>

<%@ Register Assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
    Namespace="System.Web.UI.DataVisualization.Charting" TagPrefix="asp" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Chart ID="Chart1" runat="server" Width="600px" Height="500px">
            <Titles>
                <asp:Title Text="雷達圖 - 只顯示線條" Font="Arial, 14pt, style=Bold" />
            </Titles>
            <Series>
                <asp:Series Name="Series1" ChartType="Radar" BorderWidth="2" BorderColor="Blue" />
            </Series>
            <ChartAreas>
                <asp:ChartArea Name="ChartArea1">
                    <AxisX LineColor="Black">
                        <MajorGrid LineColor="Transparent" />
                    </AxisX>
                    <AxisY LineColor="Black">
                        <MajorGrid LineColor="Transparent" />
                    </AxisY>
                </asp:ChartArea>
            </ChartAreas>
        </asp:Chart>

        <asp:Chart ID="Chart2" runat="server" Width="600px" Height="500px">
            <Titles>
                <asp:Title Text="雷達圖2 - 只顯示線條" Font="Arial, 14pt, style=Bold" />
            </Titles>
            <Series>
                <asp:Series Name="Series1" ChartType="Radar" BorderWidth="2" BorderColor="Blue" />
            </Series>
            <ChartAreas>
                <asp:ChartArea Name="ChartArea1">
                    <AxisX LineColor="Black">
                        <MajorGrid LineColor="Transparent" />
                    </AxisX>
                    <AxisY LineColor="Black">
                        <%--<MajorGrid LineColor="Transparent" />--%>
                    </AxisY>
                </asp:ChartArea>
            </ChartAreas>
        </asp:Chart>

        <asp:Chart ID="Chart3" runat="server" Width="600px" Height="500px">
            <Titles>
                <asp:Title Text="雷達圖3" Font="Arial, 14pt, style=Bold" />
            </Titles>
            <Series>
                <asp:Series Name="Series1" ChartType="Radar" BorderWidth="2" BorderColor="Blue" />
            </Series>
            <ChartAreas>
                <asp:ChartArea Name="ChartArea1">
                    <AxisX LineColor="Black">
                        <%--<MajorGrid LineColor="Transparent" />--%>
                    </AxisX>
                    <AxisY LineColor="Black">
                        <MajorGrid LineColor="Transparent" />
                    </AxisY>
                </asp:ChartArea>
            </ChartAreas>
        </asp:Chart>

        <asp:Chart ID="Chart4" runat="server" Width="600px" Height="500px">
            <Titles>
                <asp:Title Text="雷達圖4" Font="Arial, 14pt, style=Bold" />
            </Titles>
            <Series>
                <asp:Series Name="Series1" ChartType="Radar" BorderWidth="2" BorderColor="Blue" />
            </Series>
            <ChartAreas>
                <asp:ChartArea Name="ChartArea1">
                    <AxisX LineColor="Black">
                        <%--<MajorGrid LineColor="Transparent" />--%>
                    </AxisX>
                    <AxisY LineColor="Black">
                        <%--<MajorGrid LineColor="Transparent" />--%>
                    </AxisY>
                </asp:ChartArea>
            </ChartAreas>
        </asp:Chart>

        <asp:Chart ID="Chart5" runat="server" Width="600px" Height="600px"
            BorderlineWidth="1" BorderlineColor="Black" BorderlineDashStyle="Solid" Palette="None">
            <Titles>
                <asp:Title Text="雷達圖5" Font="Arial, 14pt, style=Bold" />
            </Titles>
            <ChartAreas>
                <asp:ChartArea Name="ChartArea1" BackColor="Transparent">
                    <AxisX Interval="1">
                        <MajorGrid Enabled="False" />
                    </AxisX>
                    <AxisY Minimum="0" />
                </asp:ChartArea>
            </ChartAreas>
            <Series>
                <asp:Series Name="Series1" ChartType="Radar" BorderWidth="2" Color="Blue"
                    BackGradientStyle="None" BackSecondaryColor="Transparent"
                    CustomProperties="AreaDrawingStyle=Polygon, DrawSideBySide=False"
                    IsValueShownAsLabel="true" LabelForeColor="Black" />
            </Series>
        </asp:Chart>

        <asp:Chart ID="Chart6" runat="server" Width="600px" Height="600px"
            BorderlineWidth="1" BorderlineColor="Black" BorderlineDashStyle="Solid" Palette="None">
            <Titles>
                <asp:Title Text="雷達圖6" Font="Arial, 14pt, style=Bold" />
            </Titles>
            <ChartAreas>
                <asp:ChartArea Name="ChartArea1" BackColor="Transparent">
                    <AxisX Interval="1">
                        <MajorGrid Enabled="False" />
                    </AxisX>
                    <AxisY Minimum="0" />
                </asp:ChartArea>
            </ChartAreas>
            <Series>
                <asp:Series Name="Series1" ChartType="Radar" BorderWidth="2" BorderColor="Blue" Color="Transparent"
                    BackGradientStyle="None" BackSecondaryColor="Transparent"
                    CustomProperties="AreaDrawingStyle=Polygon, DrawSideBySide=False"
                    IsValueShownAsLabel="true" LabelForeColor="Black" />
            </Series>
        </asp:Chart>
    </form>
</body>
</html>

Default.aspx.cs

using System;
using System.Drawing;
using System.Web.UI.DataVisualization.Charting;

namespace WebApplication1
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                GenerateRadarChart();
            }
        }

        private void GenerateRadarChart()
        {
            // 設定 Series
            Series series = Chart1.Series["Series1"];
            series.ChartType = SeriesChartType.Radar;
            series.BorderWidth = 2;
            series.BorderColor = Color.Blue; // 設定線條顏色
            series.Color = Color.Transparent; // 使填充透明
            series.BackSecondaryColor = Color.Transparent; // 確保不會有漸層顏色
            series.BackGradientStyle = GradientStyle.None; // 移除背景漸層
            series.IsValueShownAsLabel = true; // 顯示數值標籤

            // 加入資料點 (可根據需求修改)
            series.Points.AddXY("A", 87);
            series.Points.AddXY("B", 62);
            series.Points.AddXY("C", 93);
            series.Points.AddXY("D", 54);
            series.Points.AddXY("E", 75);
            series.Points.AddXY("A", 86); // 雷達圖需要閉合

            // 設定 ChartArea (移除網格線、設定軸線)
            ChartArea chartArea = Chart1.ChartAreas["ChartArea1"];
            //chartArea.AxisX.MajorGrid.LineColor = Color.Transparent; // 隱藏 X 軸網格線
            //chartArea.AxisY.MajorGrid.LineColor = Color.Transparent; // 隱藏 Y 軸網格線

            Series series2 = Chart2.Series["Series1"];
            // 加入資料點 (可根據需求修改)
            series2.Points.AddXY("A", 87);
            series2.Points.AddXY("B", 62);
            series2.Points.AddXY("C", 93);
            series2.Points.AddXY("D", 54);
            series2.Points.AddXY("E", 75);
            series2.Points.AddXY("A", 86); // 雷達圖需要閉合
            series2.Color = Color.Transparent; // 使填充透明

            Series series3 = Chart3.Series["Series1"];
            // 加入資料點 (可根據需求修改)
            series3.Points.AddXY("A", 87);
            series3.Points.AddXY("B", 62);
            series3.Points.AddXY("C", 93);
            series3.Points.AddXY("D", 54);
            series3.Points.AddXY("E", 75);
            series3.Points.AddXY("A", 86); // 雷達圖需要閉合

            Series series4 = Chart4.Series["Series1"];
            // 加入資料點 (可根據需求修改)
            series4.Points.AddXY("A", 87);
            series4.Points.AddXY("B", 62);
            series4.Points.AddXY("C", 93);
            series4.Points.AddXY("D", 54);
            series4.Points.AddXY("E", 75);
            series4.Points.AddXY("A", 86); // 雷達圖需要閉合

            Series series5 = Chart5.Series["Series1"];
            // 加入資料點 (可根據需求修改)
            series5.Points.AddXY("A", 87);
            series5.Points.AddXY("B", 62);
            series5.Points.AddXY("C", 93);
            series5.Points.AddXY("D", 54);
            series5.Points.AddXY("E", 75);
            series5.Points.AddXY("A", 86); // 雷達圖需要閉合

            Series series6 = Chart6.Series["Series1"];
            // 加入資料點 (可根據需求修改)
            series6.Points.AddXY("A", 87);
            series6.Points.AddXY("B", 62);
            series6.Points.AddXY("C", 93);
            series6.Points.AddXY("D", 54);
            series6.Points.AddXY("E", 75);
            series6.Points.AddXY("A", 86); // 雷達圖需要閉合
        }
    }
}

下圖



********************************************************************************

(完)

相關