Sto tentando di implementare una funzione DateListBarChart
che acquisisce dati datati e genera un grafico a barre con gli stessi posizionamenti di DateListPlot
. È essenziale che i dati vengano tracciati nella stessa posizione orizzontale se vengono forniti gli stessi dati, in modo che possano essere combinati utilizzando Show
. Mi risulta difficile ottenere le impostazioni per BarSpacing
in modo che l'intervallo orizzontale del grafico non cambi e le barre rimangano essenzialmente nello stesso punto.In che modo l'opzione BarSpacing è realmente implementata in Mathematica?
sono stato in grado di dedurre la scala corretta in modo che BarSpacing->{0.2,0.3}
risultati nel 20% della lunghezza asse x disponibile per il gruppo di barre viene ripreso con spaziatura tra le barre in quel gruppo, e il 30% come spaziatura tra gruppi di barre. Per ragioni tecniche, lo faccio passando a RectangleChart
. Secondo la documentazione, BarSpacing
viene considerato come unità assolute in RectangleChart
. Ovviamente le dimensioni assolute degli spazi devono essere più piccole se ci sono più serie e le barre devono essere più strette.
Alcuni esempi:
arList = FoldList[0.9 #1 + #2 &, 0.01, RandomReal[NormalDistribution[0, 1], 24]]
{0.01, 0.334557, 2.02709, 1.1878, 1.9009, 3.08604, 2.36652, 3.04111,
3.32364, 3.22662, 3.12626, 2.59118, 1.69334, 1.21069, 0.23171,
0.689415, -0.852649, -0.124624, 0.58604, -0.481886, 0.221074,
-0.300329, 2.36137, 0.427789, -1.47747}
dists = RandomChoice[{3, 4}, Length[arList]]
{4, 4, 4, 3, 4, 3, 4, 3, 4, 4, 3, 4, 4, 3, 4, 4, 4, 4, 3, 4, 3, 3, 3, 3, 3}
si traduce in:
RectangleChart[Transpose[{dists - 0 - 0/2, arList}],
PlotRange -> {{0, 100}, {-2, 4}}, ChartStyle -> EdgeForm[None],
Frame -> True, GridLines -> Automatic, BarSpacing -> {0, 0}]
RectangleChart[Transpose[{dists - 0.7 - 0.5/2, arList}],
PlotRange -> {{0, 100}, {-2, 4}}, ChartStyle -> EdgeForm[None],
Frame -> True, GridLines -> Automatic, BarSpacing -> {0.7, 0.5}]
notare come i dati di un non considerando la stessa distanza lungo l'asse x del precedente esempio.
Diventa ancora più caotico quando si tenta di tracciare più serie (lo stesso in questo esempio, per illustrazione).
RectangleChart[
Transpose[{{dists - i/2 - j/2, arList}, {dists - i/2 - j/2,
arList}}, {2, 3, 1}], PlotRange -> {{0, 180}, {-2, 4}},
ChartStyle -> EdgeForm[None], Frame -> True, Ticks -> None,
GridLines -> Automatic, BarSpacing -> {i, j}]
ho futzing per le età cercando di trovare la formula giusta in modo che BarSpacing
impostazioni per la funzione personalizzata (non visto qui) indurre le spaziature corrette e larghezze barra in modo che la trama orizzontale la gamma non cambia come fa BarSpacing
.
Cosa mi manca?
EDIT: In risposta a Belisario, questo è un esempio di dove sto andando. Funziona, tipo (le barre non sono perfettamente allineate con la linea, ma probabilmente sono le date che sto usando) ma i casi con barre impilate non riescono a tracciare con le barre dove dovrebbero essere, come ogni tipo di grafico a barre da solo dove esistono più serie. (Sono abbastanza orgoglioso del algoritmo di posizionamento data di etichetta: i poteri che essere sul posto di lavoro non vogliono rinunciare a quello sguardo.)
E qui è uno che proprio non funziona. I dati dovrebbero riempire l'intervallo orizzontale. (Le diverse barre di larghezza sono intenzionali - è una combinazione di dati annuali e trimestrali.)
EDIT 2
mi ricordo perché non ho utilizzare Filling
in un DateListPlot
per disegnare le barre come nel pacchetto di Mike Honeychurch - se avete qualcosa di diverso da bar molto magro, finiscono per avere il bordo superiore nel posto sbagliato.
DateListPlot[{dateARList},
PlotStyle -> {AbsolutePointSize[6], Yellow}, Filling -> {1 -> 0},
FillingStyle -> {1 -> {{AbsoluteThickness[12], Darker[Red, 0.25]}}},
PlotRange -> All]
Penso funzione VolumePlot' di Mike Honeychurch 'può risultare utile. È possibile trovare il codice qui: http://library.wolfram.com/infocenter/MathSource/7526/ Per quanto posso dire, questo codice sembra essere una versione preliminare dei nuovi grafici di visualizzazione finanza in v8. Utile? – telefunkenvf14
_Perhaps_ un esempio (immagine) di cosa si sta provando a fare con 'DateListPlot' (anche se non riuscito) potrebbe aiutarmi a capire il problema ... –
@belisarius - vedere se questo aiuta. Lo stile del grafico organizzativo è molto particolare. – Verbeia