如何在C#图表控件的饼图中格式化标签

时间:2015-10-12 15:57:24

标签: c# charts

我遇到了一个问题,如果最大列之间的差异远大于其他列,那么饼图的标签就会相互叠加。看起来很难看。

我的饼图控件: -

<div id="demographicsCharting" class="demographicsCharting" runat="server">
        <p style="margin:10px 0 0 10px;">
            <b>Demographics of Employees:</b>
        </p>
        <asp:Chart ID="demographicsChart" runat="server" Palette="SeaGreen" Width="382px" ImageType="Jpeg" >
            <Legends>
                <asp:Legend Name="StateCategories" IsTextAutoFit="true"></asp:Legend>
            </Legends>
            <Series>
                <asp:Series Name="State" YValueType="Int32" ChartType="Pie" IsVisibleInLegend="true" >
                </asp:Series>
            </Series>
            <ChartAreas>
                <asp:ChartArea Name="Default"></asp:ChartArea>
            </ChartAreas>
        </asp:Chart>
    </div>

在服务器端: -

// Get dictionary: key-value pair for number of employees per state //
var stateArray = CreateStateDictionary(Employees);
demographicsCharting.Attributes.Add("style", "display:block");

// map all the key-value pairs to the charting asp control //
demographicsChart.Series["State"].Points.DataBindXY(stateArray.Keys, stateArray.Values);

我需要让我的饼图更大,以便能够为图表上的每个标签提供足够的空间。或者我需要能够将标签从饼图中移出并将它们放在圆周上。

我试过这样的事情: -

轴标签样式和格式

您可以使用Axis对象的LabelStyle属性设置轴标签样式。您在此属性中设置的标签样式属性(如LabelStyle.Font)适用于轴的标签。如果轴标签彼此太靠近,可以将LabelStyle.LabelsAutoFit或LabelStyle.Offset属性设置为True。

但无法让它发挥作用。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我使用以下技术来解决我的问题。虽然不完全满意。

在我的图表区域: -

<ChartAreas>
            <asp:ChartArea Name="Default" Area3DStyle-Enable3D="true"></asp:ChartArea>
</ChartAreas>

在我的代码背后: -

demographicsChart.Series["State"]["PieLabelStyle"] = "Outside";