棒グラフごとに5つの値が表示され、データ値が各ブロックの中央に表示されるStackedBarがあります。ここまでは順調ですね。しかし、値がゼロの場合、値はまだ表示されていますが、ゼロが多い場合は面倒です。StackedBarで値が0のときにデータポイントラベルを非表示にする方法
ゼロのラベルを非表示にしたいと考えています。どうやってやるの?
(データを行単位で読み込み、グラフを段階的に作成することでこれを行うことができますが、クエリ結果をコントロールにスローすることができます) 。
棒グラフごとに5つの値が表示され、データ値が各ブロックの中央に表示されるStackedBarがあります。ここまでは順調ですね。しかし、値がゼロの場合、値はまだ表示されていますが、ゼロが多い場合は面倒です。StackedBarで値が0のときにデータポイントラベルを非表示にする方法
ゼロのラベルを非表示にしたいと考えています。どうやってやるの?
(データを行単位で読み込み、グラフを段階的に作成することでこれを行うことができますが、クエリ結果をコントロールにスローすることができます) 。
あなたはカスタマイズイベントでラベルを非表示にすることができます:
protected void SummaryChart_Customize(object sender, EventArgs e)
{
//hide label value if zero
foreach (System.Web.UI.DataVisualization.Charting.Series series in SummaryChart.Series)
{
foreach (System.Web.UI.DataVisualization.Charting.DataPoint point in series.Points)
{
if (point.YValues.Length > 0 && (double)point.YValues.GetValue(0) == 0)
{
point.IsValueShownAsLabel = false;
}
else
{
point.IsValueShownAsLabel = true;
}
}
}
}
、
一般的のようなものがゼロを抑制するカスタム数値形式を使用してください;;;
0.0%;;;
$#、## 0.00 ;;;
私は同じ問題を抱えていたと私は最初の部分、次の数値形式
[=0]"";0.0%
を使用してそれを解決:値がゼロに等しい場合、それが表示されるはず:
[=0]""
があることを意味空の文字列
第二部:
0.0%
この特定のケースでは、他のすべての値をパーセントで1桁の10進数で表示する必要があります。 2番目の部分としては、任意の数値形式を使用できます。
[=0];General (Standard in some localized versions of Excel)
デフォルトのフォーマットを使用することができます。
それは次のようになりVBAを使用して:ここ
Dim area as range
'The data area for the chart'
set area = Sheet1.range("A1:B3")
area.NumberFormat = "[=0];General"
ジムのソリューションは、私のために動作しませんでしたが、私は彼のコードの一部を利用して、それをやった方法です - おかげでジム!
コード:ASPXで
:背後にあるコードで
<Series>
<asp:Series ChartType="Pie" Name="Series1" ..etc....>
<EmptyPointStyle IsValueShownAsLabel="false" IsVisibleInLegend="false" />
</asp:Series>
</Series>
(うん、ここでVBを使用して!):
(注:私はこの質問には関係ありませんこれは、同様に、この特定の円グラフ上のすべての点を爆発する必要がありますが、それが誰かを助け場合、私は、それを左)
Protected Sub Chart1_DataBound(sender As Object, e As EventArgs) Handles Chart1.DataBound
Dim chart As Chart = TryCast(sender, Chart)
If chart IsNot Nothing Then
' Explode all points
For Each p As DataPoint In chart.Series(0).Points
p.CustomProperties = "Exploded=true"
' Remove zero points
If p.YValues.Length > 0 AndAlso p.YValues.GetValue(0) = 0 Then
p.IsEmpty = True
End If
Next
End If
End Sub
私
foreach (System.Web.UI.DataVisualization.Charting.Series series in SummaryChart.Series)
{
foreach (System.Web.UI.DataVisualization.Charting.DataPoint point in series.Points)
{
if (point.YValues.Length > 0 && (double)point.YValues.GetValue(0) == 0)
{
point.LegendText = point.AxisLabel;//In case you have legend
point.AxisLabel = string.Empty;
point.Label = string.Empty;
}
}
}
このために完全にこの作品は私
For Each s As Series In Chart1.Series
For Each dp As DataPoint In s.Points
If dp.YValues(0) = 0 Then
dp.IsEmpty = True
End If
Next
Next
のために働いています
これは私が真= C#point.IsEmptyに変換が成功への鍵ですので、あなたがpoint.IsValueShownAsLabelを必要とするとき、これは=必要とされ、これをマークアップされている(私は唯一のシリーズのためにそれをテストした)正しく
foreach (System.Windows.Forms.DataVisualization.Charting.DataPoint point in chartShow.Series["S3"].Points)
{
if (point.YValues.Length > 0 && (double)point.YValues.GetValue(0) == 0)
{
point.IsEmpty = true;
}
else
{
point.IsEmpty = false;
}
}
を働きましたtrueを選択し、Series [chartSeries] .LabelFormat = "mm:ss"を設定します。 – peterincumbria