OHLC: first and last candles are clipped at the plot edges
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 68/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- java
- Ambito
- data-visualization
Direzione di ricerca
Inizia da PlotContent_OHLC.doPaint, in particolare dal calcolo di xTransform e dalla gestione della larghezza delle candele. Riproduci il problema con un grafico contenente quattro candele larghe ed esamina la copertura dei test correlata di PR #991. Il lavoro è completato quando la prima e l’ultima candela vengono renderizzate completamente all’interno dell’area del grafico senza introdurre regressioni nel comportamento OHLC esistente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
In an OHLC candlestick chart, the x-axis range is set to exactly [dataMin, dataMax]. As a result, the first and last candles are centered on the plot's left/right boundaries, so roughly half of each edge candle body extends past the plot content area and is clipped.
Reproduction
A chart with few, wide candles makes this obvious (e.g. 4 candles) — the leftmost and rightmost candle bodies are visibly cut in half by the plot border. See screenshot discussion in #734 / PR #991.
Root cause
- The first data point (
x = xMin) maps to the left edge of the tick space and the last (x = xMax) to the right edge —PlotContent_OHLC.doPaint(xTransform = xLeftMargin + ((x - xMin) / (xMax - xMin) * xTickSpace)). - Each candle is drawn centered on that point, extending
±candleHalfWidth. - The only slack is the plot-content margin (
getPlotContentSize()default0.92→ ~4% of width per side). The candle half-width isxTickSpace / xData.length / 2, which for a small number of candles greatly exceeds that margin, so the edge candles overrun the boundary.
With realistic OHLC data (many narrow candles) the overrun is a thin sliver and largely unnoticeable, which is likely why it hasn't been reported before.
Suggested fix
Pad the x-axis range (or the mapped plot area) by ~half a candle width on each side, as most candlestick charting libraries do, so the first and last candles render fully inside the plot. This should be independent of the candle count.
Notes
Discovered while adding test coverage in PR #991 (issue #734, doji candles). This clipping is a pre-existing, general OHLC rendering behavior, unrelated to the doji fix.
- Lingua principale
- Java
- Stelle
- 1.6k
- Fork
- 398
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di knowm/XChart
-
BoxChart rejects valid List.of data with NullPointerExceptionForse già presa @PHJ2000 l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
-
X-Axis Line not visibleForse già presa @timmolter l’ha presa 59 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
-
`CategoryChart.addSeries` could support additional call signature for interoperability with ScalaAperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
-
AnnotationsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 35/100
Tutte le issue di knowm/XChart
Issue simili
-
Bump up AWS SDK to 2.54.3Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
jenkinsci/ec2-plugin#2041 ·
-
L: github:actions L: php:composer
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
dependabot/dependabot-core#16493 ·
I maintainer di solito rispondono entro 1 giorno
-
SHOW EDIT of a subclass for an object of its superclass: the form fails to open with AssertionErrorAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
FlashyReese/sodium-extra#608 ·