diff --git a/maui/src/Charts/Axis/ChartAxis.cs b/maui/src/Charts/Axis/ChartAxis.cs index 4677fb98..f16517e4 100644 --- a/maui/src/Charts/Axis/ChartAxis.cs +++ b/maui/src/Charts/Axis/ChartAxis.cs @@ -239,9 +239,9 @@ public double PointToValue(double x, double y) protected internal double GetActualDesiredIntervalsCount(Size availableSize) { double size = !IsVertical ? availableSize.Width : availableSize.Height; - double adjustedDesiredIntervalsCount = size * (!IsVertical ? 0.54 : 1.0) * MaximumLabels; - var actualDesiredIntervalsCount = Math.Max(adjustedDesiredIntervalsCount / 100, 1.0); - return actualDesiredIntervalsCount; + double spacingFactor = GetLabelSpacingFactor(); + double adjustedDesiredIntervalsCount = size * spacingFactor * MaximumLabels; + return Math.Max(adjustedDesiredIntervalsCount / 100, 1.0); } /// @@ -776,6 +776,25 @@ void RaiseActualRangeChangedEvent(DoubleRange visibleRange, Size plotSize) } } + double GetLabelSpacingFactor() + { + if (IsVertical) + return 1.0; + + // Base factor for horizontal labels - more conservative than 0.54 + double factor = 0.6; + // Adjust based on label rotation + double rotationRadians = Math.Abs(LabelRotation) * Math.PI / 180; + + if (rotationRadians > 0) + { + // Rotated labels can be packed more densely + factor *= 1.0 + 0.3 * Math.Sin(rotationRadians); + } + + return factor; + } + #endregion #endregion