Ich verwende BarChartView von danielgindi/ios-Charts Diagrammerstellung. Bis jetzt bin ich in der Lage, BarChartView zu folgen. Meine Frage, gibt es eine Möglichkeit, X-Achse auf diese Weise anzupassen, wird es nur zeigen min (links meisten Wert 37,03), max (rechts meisten Wert 37,31, die versteckt), Wert für den grünen Balken (37,17) und Wert für orange bar (37.18 was sich wieder versteckt). Kurz gesagt möchte ich einen Wert von XAxis verbergen, der in meinem Fall nicht wichtig ist.Benutzerdefinierte X-Achse für BarChartView
-1
A
Antwort
0
Dies ist ein Beispiel: eine Eigenschaft showOnlyLeftRightEnabled
in YourChartXAxis
Klasse, dann in Ihrer benutzerdefinierten x-Achse Renderer, overide internal override func drawLabels(context context: CGContext, pos: CGFloat, anchor: CGPoint)
genannt hinzuzufügen. die Bar ist, und wandeln den x-Index auf Pixelwerte
brauchen, um herauszufinden Sie die mittlere die Anzeige wie, was ich tat, für den am weitesten links stehenden und am weitesten rechts stehenden Wert über CGPointApplyAffineTransform(position, valueToPixelMatrix)
internal override func drawLabels(context context: CGContext, pos: CGFloat, anchor: CGPoint)
{
let paraStyle = NSParagraphStyle.defaultParagraphStyle().mutableCopy() as! NSMutableParagraphStyle
paraStyle.alignment = .Center
let labelAttrs = [NSFontAttributeName: _xAxis.labelFont,
NSForegroundColorAttributeName: _xAxis.labelTextColor,
NSParagraphStyleAttributeName: paraStyle]
let labelRotationAngleRadians = _xAxis.labelRotationAngle * ChartUtils.Math.FDEG2RAD
let valueToPixelMatrix = transformer.valueToPixelMatrix
var position = CGPoint(x: 0.0, y: 0.0)
var labelMaxSize = CGSize()
if (_xAxis.isWordWrapEnabled)
{
labelMaxSize.width = _xAxis.wordWrapWidthPercent * valueToPixelMatrix.a
}
if let showOnlyLeftRight = (_xAxis as? YourChartXAxis)?.showOnlyLeftRightEnabled
{
if (showOnlyLeftRight)
{
for (var i = lowestVisibleXIndex, maxX = min(highestVisibleXIndex + 1, _xAxis.values.count); i < maxX; i += maxX - lowestVisibleXIndex - 1)
{
let label = _xAxis.values[i]
if (label == nil)
{
continue
}
position.x = CGFloat(i)
position.y = 0.0
position = CGPointApplyAffineTransform(position, valueToPixelMatrix)
let labelns = label! as NSString
//label location by string width
// fix rightLabel
if (highestVisibleXIndex == lowestVisibleXIndex)
{
return super.drawLabels(context: context, pos: pos, anchor: anchor)
}
else if (i == highestVisibleXIndex)
{
let width = labelns.boundingRectWithSize(labelMaxSize, options: .UsesLineFragmentOrigin, attributes: labelAttrs, context: nil).size.width
rightLabelX -= width/2.0
}
else if (i == lowestVisibleXIndex)
{ // fix leftLabel
let width = labelns.boundingRectWithSize(labelMaxSize, options: .UsesLineFragmentOrigin, attributes: labelAttrs, context: nil).size.width
leftLabelX += width/2.0
}
// fill leftLabel and rightLabel in current visible screen
if (lowestVisibleXIndex == highestVisibleXIndex) {
ChartUtils.drawMultilineText(context: context, text: label!, point: CGPoint(x: leftLabelX, y: pos), attributes: labelAttrs, constrainedToSize: labelMaxSize, anchor: anchor, angleRadians: labelRotationAngleRadians)
ChartUtils.drawMultilineText(context: context, text: label!, point: CGPoint(x: rightLabelX, y: pos), attributes: labelAttrs, constrainedToSize: labelMaxSize, anchor: anchor, angleRadians: labelRotationAngleRadians)
break
} else if (i == lowestVisibleXIndex) {
ChartUtils.drawMultilineText(context: context, text: label!, point: CGPoint(x: leftLabelX, y: pos), attributes: labelAttrs, constrainedToSize: labelMaxSize, anchor: anchor, angleRadians: labelRotationAngleRadians)
} else if (i == highestVisibleXIndex) {
ChartUtils.drawMultilineText(context: context, text: label!, point: CGPoint(x: rightLabelX, y: pos), attributes: labelAttrs, constrainedToSize: labelMaxSize, anchor: anchor, angleRadians: labelRotationAngleRadians)
}
}
} else {
super.drawLabels(context: context, pos: pos, anchor: anchor)
}
}
}
Verwandte Themen
- 1. c3js konvertieren xAchse aus Dezimalzahl in Integer zählen
- 2. Highcharts Datenetiketten nicht auf mehreren xAchse und yAxis
- 3. In HighCharts wie Anzahl der xAchse autoly setzen?
- 4. , wie die Zeit auf xAchse Gebrauch zu forma d3.js
- 5. Benutzerdefinierte Daten für benutzerdefinierte Ereignisse in HockeyApp
- 6. Benutzerdefinierte Stile für benutzerdefinierte Widgets in Qt
- 7. Benutzerdefinierte Abfrage für Wordpress benutzerdefinierte Beitragstyp
- 8. CSS für benutzerdefinierte Checkbox und benutzerdefinierte Radiobox
- 9. Datenbindung für benutzerdefinierte Klasse
- 10. benutzerdefinierte iCarousel für iPhone?
- 11. Ereignisse für benutzerdefinierte UIView
- 12. Benutzerdefinierte Schriftart für JComboBox
- 13. Benutzerdefinierte Navigation für xamarin.android
- 14. Shebang für benutzerdefinierte Shell?
- 15. Benutzerdefinierte Renderer für Grid
- 16. benutzerdefinierte $ .Validator.AddMethod für Html.DropDownList
- 17. Benutzerdefinierte Listenansicht für AlertDialog
- 18. DateTimePicker für benutzerdefinierte Kalender
- 19. benutzerdefinierte Ausnahme für ArrayIndexOutOfBoundsException
- 20. Benutzerdefinierte Bedingung für UIA
- 21. Benutzerdefinierte Ansicht für Menüpunkt
- 22. Benutzerdefinierte Animation für Viewpager
- 23. Schaltfläche für benutzerdefinierte Steuerfelder
- 24. Benutzerdefinierte Maske für Telefonnummern
- 25. Benutzerdefinierte Renderer für Angular2
- 26. Benutzerdefinierte Gerüst für Controller
- 27. Benutzerdefinierte Schriftart für android.support.design.widget.TabLayout
- 28. Benutzerdefinierte Bildlaufleisten für DATENBILDER
- 29. benutzerdefinierte Build für VS2010
- 30. Orchard für benutzerdefinierte Websites
Warum don filtern Sie nicht die Daten, die im Diagramm angezeigt werden sollen? –
aus dem Quellcode: https://github.com/danielgindi/ios-charts/blob/master/Charts/Classes/Components/ChartXAxis.swift. Ich denke, Sie können versuchen, "setLabelsToSkip" -Methode zu verwenden. Die Methode deaktiviert die automatische Berechnung von Beschriftungen auf der Achse, sodass Sie versuchen können, (dataset.count - 1) oder etwas herum zu überspringen, um zu sehen, wie das Ergebnis aussieht. – Surely
Wenn ich etwas wie barChartView.xAxis.setLabelsToSkip (5) mache, wird das erste Etikett angezeigt, dann überspringe 5 die Anzeige 6. und überspringe dann 5 Mal. Das ist nicht was ich will, aber danke für den Vorschlag. – AAV