Benutzer mit den meisten Antworten
Chart: StackedColumn - Prozentwert in Tooltip

Frage
-
Hallo liebe Forumsmitglieder,
in einem StackedColumn-Chart möchte ich zusätzlich die Prozentwerte im Tooltip mit anzeigen.Ist denn das mit der derzeitigen Lösung irgendwie möglich?
xChart.DataSource = MonitorList Dim sProdmenge As New Series("ProdMenge") Dim sAusschuss As New Series("Ausschuss") strYAxisTitle = "Stück" With sAusschuss .YValueMembers = "AUSSCHUSS" .ToolTip = "#VALX - Ausschuss: #VALY{#,##}" .LegendText = "Ausschuss" .Color = Color.FromArgb(240, 250, 50, 50) End With With sProdmenge .YValueMembers = "GUTSTUECK" .ToolTip = "#VALX - Gutteile: #VALY{#,##}" .YAxisType = AxisType.Primary .LegendText = "Gutteile" .Color = Color.FromArgb(120, 210, 120) End With With xChart.Series .Add(sProdmenge) .Add(sAusschuss) End With
Die Herkunft ist eine Klasse die die Prozentwerte gleich mit liefert.
Kann ich beim Zuweisen des Tooltips auf das andere Series-Object verweisen?
Noch eine andere Frage: Kann ich einer Series eine Css-Klasse zuweisen? Wenn ja, wie?
Vielen Dank.
Viele Grüße, Volker
Antworten
-
Hallo Volker,
Du kannst anstelle von #PERCENT natürlich auch einen beliebigen Wert in den Tooltip einbauen. Du musst dir nur den richtigen Wert in der Schleife ermitteln.
Alternativ kannst Du evtl. auch mit einer CustomProperty arbeiten.
Beim erstellen der DataPoints kannst Du dann den gewünschten Wert bspw. so angeben:
For ... Dim Point As New DataPoint( ... ) Point.SetCustomProperty( "Prozent", DeinWert.ToString() ) Chart.Series( "<Series>" ).Points.Add( Point ) Next
Der Tooltip sollte dann so aussehen:
"#VALY\n#VALX\n#CUSTOMPROPERTY(Prozent)"
Siehe dazu:
https://msdn.microsoft.com/en-us/library/dd456687.aspx
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Donnerstag, 25. Mai 2017 08:37
- Als Antwort markiert Volker S Montag, 29. Mai 2017 06:12
Alle Antworten
-
Hallo Volker,
willst Du die normalen Werte und zusätzlich die Prozentwerte anzeigen? Falls ja, wie soll das im Ergebnis aussehen?
Ggfs. hilft dir dieser FormatString:
For Each Point As DataPoint In <Chart>.Series( "<Series>" ).Point Point.Label = "#PERCENT\n#VALX" Next
Ob das auch im Tooltip geht, weiß ich grade nicht, aber probier es einfach mal aus.
Siehe dazu bspw.:
https://stackoverflow.com/questions/24285696/adding-value-and-percentage-to-pie-chart-in-asp-net
Bzgl. der CSS Klasse gibt es IIRC im ASP.NET Chart Control keine Möglichkeit, diese zuzuweisen. Du müsstest die einzelnen Styles selbst setzen. Siehe dazu:
https://www.experts-exchange.com/questions/28489902/Applying-style-to-the-asp-net-c.html
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan,
vielen Dank für dein Interesse.
Ja, ich möchte die normalen Werte mit Anzeigen lassen (siehe Grafik).
Im Tooltip sollen dann eben die Stückzahlen und auch der prozentuale Anteil der Monatssumme Gut+Ausschuss enthalten sein.
Mit der vorgeschlagenen Lösung wird allerdings ein Prozentwert angezeigt, der nicht passt (so wie es aussieht, ist das anteilige Wert der Summe aller Werte des Series-Objects).Das mit dem CSS hab ich mir schon so gedacht.
Viele Grüße, Volker
-
Hallo Volker,
Du kannst anstelle von #PERCENT natürlich auch einen beliebigen Wert in den Tooltip einbauen. Du musst dir nur den richtigen Wert in der Schleife ermitteln.
Alternativ kannst Du evtl. auch mit einer CustomProperty arbeiten.
Beim erstellen der DataPoints kannst Du dann den gewünschten Wert bspw. so angeben:
For ... Dim Point As New DataPoint( ... ) Point.SetCustomProperty( "Prozent", DeinWert.ToString() ) Chart.Series( "<Series>" ).Points.Add( Point ) Next
Der Tooltip sollte dann so aussehen:
"#VALY\n#VALX\n#CUSTOMPROPERTY(Prozent)"
Siehe dazu:
https://msdn.microsoft.com/en-us/library/dd456687.aspx
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Donnerstag, 25. Mai 2017 08:37
- Als Antwort markiert Volker S Montag, 29. Mai 2017 06:12
-
Hallo Stefan,
also wenn ich dich richtig verstanden habe, dann weise ich dem Chart keinen DataSource zu, sondern setze die DataPoints manuell. Aber da könnte ich ja dann den Tooltip direkt zuweisen, ohne über ein SetCustomProperty...
For Each element in MonitorList Dim dpA As New DataPoint 'Ausschuss
Dim dpG As New DataPoint 'Gutteile
Dim intSumme As Integer = element.Prodmenge+element.AusschussDim pWertA As decimal = element.Ausschuss/intSumme * 100
Dim pWertG as decimal = element.Prodmenge/intSumme * 100dpA.Tooltip=String.Format("Ausschuss: {0} %", pWertA)
dpG.Tooltip=String.Format("Gutteile: {0} %", pWertG)xChart.Series("Prodmenge").Points.Add(dpA)
xChart.Series("Ausschuss").Points.Add(dpG)Next
Oder kann ich besser die Datapoints direkt dem zuvor instanzierten SeriesObject zuweisen?
Ich muss ehrlich gestehen, die MSDN-Hilfe ist mit Beispielen dazu recht dünn gesät.Das muss ich dann am Montag mal versuchen.
Vielen Dank für deinen Tipp.Einen schönen Feiertag und Prost!
;)
Viele Grüße, Volker
- Bearbeitet Volker S Donnerstag, 25. Mai 2017 11:11
-
Hallo Volker,
das geht sicher auch über die Zuweisung einer DataSource, allerdings muss pro Point dann trotzdem die CustomProperty gesetzt werden, Du müsstest also nach dem DataBind noch die DataPoints durchlaufen und den Wert setzen.
Ich hab schon ewig kein Chart Control mehr verwendet, daher hab ich das nur mit dem manuellen Erstellen der DataPoints probiert.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community