2012-10-25 14 views

Odpowiedz

9

Nie ma nic bardzo aktywnego do tworzenia grafik wewnątrz Prawn bezpośrednio, ale Gruff jest aktywnym klejnotem, który jest wysoce konfigurowalny i pozwoli ci tworzyć wszystkie rodzaje wykresów.

Prawdę mówiąc, krewetka jest w zasadzie opakowaniem wokół gburowatych!

Moja rada polega na użyciu gruffa do wygenerowania wymaganych wykresów i wykresów, a następnie osadzenia ich jako obrazów w dokumencie Prawn.

Więc kod będzie wyglądał tak:

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

jest jakiś sposób, aby zdać krewetkę obraz bajty zamiast pisać go na dysku i przejście do do krewetki? – eggie5

+0

@ eggie5 not possible imo. –

2

stworzyłem bibliotekę Prawn Graphing nazwie PrawnCharts który zależy tylko od krewetek i nie opiera się na rmagick i ImageMagick. rMagick i ImageMagick są denerwującymi zależnościami (duże pliki, bolesne w instalacji itp.) i tworzą większe pliki w porównaniu z natywnym rozwiązaniem, takim jak PrawnCharts.

Oto przykład wykresu I wytworzonej z PrawnCharts:

enter image description here

Zapraszam do składania zapytań Pull - będę je scalić.

2

@ eggie5 Odnośnie korzystania gburowaty z krewetek, aby wstawić obraz bez zapisywania go na dysku, to jest całkiem prosta:

image StringIO.new(g.to_blob) 
Powiązane problemy