特定の問題は、以前に尋ねられたものです。asp:chart コントロールがありますが、X 軸にすべてのラベルが表示されません。同じ質問: ASP.NET チャートでラベルが消えるのはなぜですか?
ただし、答え(X軸の間隔= 1)は私のコントロールでは何もしません。さらに、設定を変更しようとしても多くのことが何も起こらないため、設定が間違っているのではないかと思っています。たとえば、LabelAutoFitStyle 設定はチャートに何も影響しません。
これが私のコードです:
<asp:Chart ID="SalesChart" Width="500" Height="400" ImageStorageMode="UseHttpHandler" EnableViewState="False" runat="server" ImageType="Png">
<Series>
<asp:Series ChartType="Column" Name="StatsSeries" XAxisType="Secondary" ToolTip="#VALX: #VALY{C0}" label="#VALY{C0}" LabelBorderColor="Gray" LabelBackColor="#FFF6AA">
<Points>
</Points>
</asp:Series>
</Series>
<ChartAreas>
<asp:ChartArea Area3DStyle-Enable3D="true" Name="StatsChartArea" Area3DStyle-PointGapDepth="0" Area3DStyle-Rotation="20" Area3DStyle-PointDepth="60" Area3DStyle-Inclination="20">
<AxisX LabelAutoFitMinFontSize="10" Interval="1">
<MajorGrid Interval="1" />
<MinorGrid />
<LabelStyle Interval="1" />
</AxisX>
<AxisY>
<LabelStyle Format='{C0}' />
<MinorGrid Enabled="True" LineColor="Gray" />
</AxisY>
</asp:ChartArea>
</ChartAreas>
</asp:Chart>
背後にあるコード (関係のない多くのコードをここに隠しました):
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// Here I get chart data
//Set everything up
if (statsDataTable.Rows.Count > 0)
{
SetChartData(statsDataTable);
SetChartGridResolution();
SetChartBarColors();
}
}
}
private void SetChartData(DataTable statsDataTable)
{
ArrayList xValues = new ArrayList();
ArrayList yValues = new ArrayList();
// I populate the lists with values, and then bind it below
SalesChart.Series[0].Points.DataBindXY(xValues, yValues);
}
/// <summary>
/// Set the intervals on the grid, based on the highest value.
/// </summary>
private void SetChartGridResolution()
{
if (SalesChart.Series[0].Points.FindMaxByValue().YValues[0] > 2000000)
{
SalesChart.ChartAreas[0].AxisY.LabelStyle.Interval = 1000000;
SalesChart.ChartAreas[0].AxisY.MajorGrid.Interval = 1000000;
SalesChart.ChartAreas[0].AxisY.MajorTickMark.Interval = 1000000;
SalesChart.ChartAreas[0].AxisY.MinorGrid.Interval = 500000;
}
else if (SalesChart.Series[0].Points.FindMaxByValue().YValues[0] > 1000000)
{
SalesChart.ChartAreas[0].AxisY.LabelStyle.Interval = 200000;
SalesChart.ChartAreas[0].AxisY.MajorGrid.Interval = 200000;
SalesChart.ChartAreas[0].AxisY.MajorTickMark.Interval = 200000;
SalesChart.ChartAreas[0].AxisY.MinorGrid.Interval = 100000;
}
else
{
SalesChart.ChartAreas[0].AxisY.LabelStyle.Interval = 100000;
SalesChart.ChartAreas[0].AxisY.MajorGrid.Interval = 100000;
SalesChart.ChartAreas[0].AxisY.MajorTickMark.Interval = 100000;
SalesChart.ChartAreas[0].AxisY.MinorGrid.Interval = 50000;
}
}
private void SetChartBarColors()
{
System.Drawing.Color color1 = System.Drawing.ColorTranslator.FromHtml("#007dc3");
System.Drawing.Color color2 = System.Drawing.ColorTranslator.FromHtml("#539dc8");
for (int i = 0; i < SalesChart.Series[0].Points.Count; i++)
{
if (i % 2 == 0)
SalesChart.Series[0].Points[i].Color = color1;
else
SalesChart.Series[0].Points[i].Color = color2;
}
}
手がかりを教えていただければ幸いです。
よろしくジェイコブ