2012-10-25 11 views

risposta

9

Non c'è nulla di molto attivo per la grafica all'interno di Prawn direttamente, ma Gruff è un gioiello attivo che è altamente configurabile e ti permetterà di creare tutti i tipi di grafici.

In realtà il grafico di gamberi è fondamentalmente un involucro intorno al burbero!

Il mio consiglio è di usare burbero per generare i diagrammi e grafici richiesti e quindi incorporarli come immagini nel documento di Prawn.

Quindi il codice sarebbe simile a questa:

g = Gruff::Line.new(400) 
g.title = "Transparent Background" 
g.theme = { 
    :colors => ['black', 'grey'], 
    :marker_color => 'grey', 
    :font_color => 'black', 
    :background_colors => 'transparent' 
} 
g.labels = { 
    0 => '5/6', 
    1 => '5/15', 
    2 => '5/24', 
    3 => '5/30', 
} 
g.data(:apples, [-1, 0, 4, -4]) 
g.data(:peaches, [10, 8, 6, 3]) 
g.write(path_to_save) 

Prawn::Document.generate("graphed-pdf.pdf") do 
    text "The image will go right below this line of text." 
    image "#{path_to_save}" 
end 
+1

c'è un modo per passare gamberetto all'immagine byte invece di scrittura sul disco e passando per ai gamberi? – eggie5

+0

@ eggie5 non possibile imo. –

2

Ho creato una libreria grafica Prawn chiamato PrawnCharts che dipende solo Prawn e non si basa su RMagick e ImageMagick. rMagick e ImageMagick sono fastidiose dipendenze (file di grandi dimensioni, dolorose da installare, ecc.) e creano file più grandi rispetto a una soluzione nativa come PrawnCharts.

Ecco un esempio di un grafico ho generato con PrawnCharts:

enter image description here

Sentitevi liberi di presentare le richieste di pull - io li fondono.

2

@ eggie5 Riguardo usando burbero con gamberi inserire un'immagine senza salvarla su disco, è piuttosto semplice:

image StringIO.new(g.to_blob)