Victory Native xl автоматически обновляет ось YIOS

Программируем под IOS
Ответить
Anonymous
 Victory Native xl автоматически обновляет ось Y

Сообщение Anonymous »

Я пытаюсь создать диаграмму для отслеживания веса с течением времени. Я хочу отображать данные за неделю за раз, но позволяю пользователю панорамировать данные. Если самое низкое (или самое высокое) значение веса выходит за пределы оси Y, значения оси Y должны быть обновлены, чтобы линия оставалась в середине графика.
вот GIF, представляющий то, чего я пытаюсь достичь
Это код, который я написал до сих пор

Код: Выделить всё

    import inter from "../assets/fonts/inter.ttf";

function generateWeightData(num: number) {
const generatedData = [];
let currentDate = new Date("2025-01-01");
let currentWeight = 80.5; // Initial wweight

for (let i = 0; i < num; i++) {
generatedData.push({
date: currentDate.getTime(),
weight: parseFloat(currentWeight.toFixed(1)),
});

currentDate.setDate(currentDate.getDate() + 1);

const dailyVariation = (Math.random() - 0.5) * 0.14;

const trend = -0.01;

currentWeight += trend + dailyVariation;
}

return generatedData;
}

const newData = generateWeightData(365);

const minDate = newData[0].date;
const maxDate = newData[newData.length - 1].date;

const initialDateStart = newData[0].date;
const initialDateEnd = newData[6].date; // 7 giorni (indice 0-6)

export default function App() {
const font = useFont(inter, 12);

const { state: transformState } = useChartTransformState({});

const [startDate, setDataIniziale] = useState(initialDateStart);
const [endDate, setDataFine] = useState(initialDateEnd);

if (!font) {
return null;
}

return (



new Date(value).toLocaleString("en-US", {
month: "short",
day: "numeric",
}),
}}
yAxis={[
{
axisSide: "left",
font: font,
formatYLabel: (value) => `${value.toFixed(1)}kg`,
enableRescaling: true,
},
]}
frame={{ lineWidth: 2 }}
transformState={transformState}
transformConfig={{
pan: { dimensions: ["x"] },
}}
onChartBoundsChange={(e) => {

}}

onScaleChange={(xScale, yScale) => {

}}
>
{({ points }) => (

)}


);
}
он ​​дает следующее
Я пробовал работать с областью просмотра и доменом, но, похоже, не могу заставить их работать правильно: либо отображаются все данные от начала до конца, либо только часть без меток на оси X, а также метки оси Y не масштабируются автоматически, можете ли вы подсказать мне правильное направление? спасибо

Подробнее здесь: https://stackoverflow.com/questions/798 ... ate-y-axis
Ответить

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

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

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

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

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