Как я могу призвать быстрое ось диаграммы, чтобы иметь клещи над линией нижней сетки и всегда иметь начало и конец тиканIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу призвать быстрое ось диаграммы, чтобы иметь клещи над линией нижней сетки и всегда иметь начало и конец тикан

Сообщение Anonymous »

Требования < /h1>
Я использую Swift Charts для создания линейной диаграммы, представляющей значения акций с течением времени, и я стремлюсь к дизайну с вставками в каждый месяц. Мне нужно, чтобы начало, конец и средние клеща были больше, и включайте этикетку под тиком. .sstatic.net /qszjesmn.png " /> < /p>
Progress < /h1>
Я работал над быстрым POC в Swift Latchs и сумел сделать Ось выглядит следующим образом:

Это близко к дизайну, но у меня есть две выдающиеся проблемы: < /p>
1. Расстояние между линией сетки нижней оси и метками значений < /h3>
Я установил вертикальное расстояние на 0, но я замечаю, что между линией сетки нижней оси и значением оси содержится около 16 точек расстояния. этикетка. Установка вертикального расстояния на -16 дает мне результат, который я хочу, но это не похоже на правильное решение.
откуда происходит это дополнительное расстояние и как это исправить? < /P>
2. Первое и последнее оси X с метками даты < /h3>
Я хочу убедиться, что первые и последние клещей оси X являются основными клещами с соответствующими метками даты. Как я могу убедиться, что эти клещи отмечены как основные и иметь метки?import SwiftUI
import Charts

struct PlanValue: Codable, Identifiable {
let value: Double
let date: Date

var id: Date { date }
}

// Date formatter to parse the date strings
let dateFormatter: ISO8601DateFormatter = {
let formatter = ISO8601DateFormatter()
formatter.formatOptions = [.withFullDate]
return formatter
}()

let fundValues: [PlanValue] = [
PlanValue(value: 100.58, date: dateFormatter.date(from: "2023-01-30")!),
PlanValue(value: 200.22, date: dateFormatter.date(from: "2023-01-31")!),
PlanValue(value: 505.66, date: dateFormatter.date(from: "2023-02-28")!),
PlanValue(value: 399.33, date: dateFormatter.date(from: "2023-03-31")!),
PlanValue(value: 5652.37, date: dateFormatter.date(from: "2023-04-30")!),
PlanValue(value: 5755.66, date: dateFormatter.date(from: "2023-05-31")!),
PlanValue(value: 5850.81, date: dateFormatter.date(from: "2023-06-30")!),
PlanValue(value: 6002.82, date: dateFormatter.date(from: "2023-07-31")!),
PlanValue(value: 5750.62, date: dateFormatter.date(from: "2023-08-31")!),
PlanValue(value: 5699.93, date: dateFormatter.date(from: "2023-09-30")!),
PlanValue(value: 5820.01, date: dateFormatter.date(from: "2023-10-31")!),
PlanValue(value: 6105.03, date: dateFormatter.date(from: "2023-11-30")!),
PlanValue(value: 6291.02, date: dateFormatter.date(from: "2023-12-31")!),
PlanValue(value: 6399.48, date: dateFormatter.date(from: "2024-01-31")!),
PlanValue(value: 6544.99, date: dateFormatter.date(from: "2024-02-29")!),
PlanValue(value: 6700.69, date: dateFormatter.date(from: "2024-03-31")!),
PlanValue(value: 6850.57, date: dateFormatter.date(from: "2024-04-30")!),
PlanValue(value: 6998.78, date: dateFormatter.date(from: "2024-05-31")!),
PlanValue(value: 6400.39, date: dateFormatter.date(from: "2024-06-30")!),
PlanValue(value: 6450.33, date: dateFormatter.date(from: "2024-07-31")!),
PlanValue(value: 29555.39, date: dateFormatter.date(from: "2024-08-31")!),
PlanValue(value: 30300.39, date: dateFormatter.date(from: "2024-09-30")!),
PlanValue(value: 30836.33, date: dateFormatter.date(from: "2024-10-31")!),
PlanValue(value: 30750.06, date: dateFormatter.date(from: "2024-11-30")!),
PlanValue(value: 31011.97, date: dateFormatter.date(from: "2024-12-31")!),
PlanValue(value: 32500.24, date: dateFormatter.date(from: "2025-01-29")!)
]

struct ContentView: View {
var body: some View {
Chart {
// Fund Values
ForEach(fundValues) { planValue in
LineMark(x: .value("Date", planValue.date),
y: .value("Value", planValue.value)
)
}
}
.chartXAxis {
let numberOfMajorTicks = 3
// Major Ticks + Labels
AxisMarks(preset: .aligned, values: .automatic(desiredCount: numberOfMajorTicks) ) { value in
AxisValueLabel(format: .dateTime.month().year(.twoDigits), verticalSpacing: 0)
}
AxisMarks(preset: .inset, values: .automatic(desiredCount: numberOfMajorTicks)) { value in
AxisTick(length: 16, stroke: StrokeStyle(lineWidth: 1))
.foregroundStyle(Color.black)
}

// Minor Ticks
AxisMarks(preset: .inset, values: .stride (by: .month)) { value in
AxisTick(centered: true, length: 8, stroke: StrokeStyle(lineWidth: 1))
.foregroundStyle(Color.black)
}
}
.chartYAxis {
AxisMarks(preset: .aligned, values: .automatic(desiredCount: 7) ) { value in
let isFirstLine = value.index == 0
AxisGridLine(stroke: StrokeStyle(lineWidth: 1, dash: [isFirstLine ? 0 : 4], dashPhase: 0))
.foregroundStyle(isFirstLine ? .black : .gray)
AxisValueLabel(format: .currency(code: "GBP").notation(.compactName))
}
}

.frame(height: 275)
.padding()
}
}

#Preview {
ContentView()
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... e-and-alwa
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»