[racket-dev] [plt] Push #28468: master branch updated
Yes, the relative size of the font will grow, as well as minor things,
such as that the lines will thicken a bit. IOW, without the fix, if you
output the same plot to a PDF, SVG, and PNG, the PDF will have a smaller
font and thinner lines than the SVG and PNG.
It can be hard to tell without converting them to the same format for
comparison, which is why I didn't spot this for so long. I just thought
papers looked better when plots had slightly larger fonts.
I verified that the fix works by using the Gimp to convert a PDF and an
SVG to two 500x500 images, and pasted one over the other.
Neil ⊥
On 04/04/2014 06:42 AM, Robby Findler wrote:
> I'm not completely clear on the precise impact of old papers: will the
> plot itself stay the same size, but the relative size of the font (to
> the other plot elements) inside the plot change only? Or something else?
>
> Robby
>
>
> On Fri, Apr 4, 2014 at 12:08 AM, Neil Toronto <neil.toronto at gmail.com
> <mailto:neil.toronto at gmail.com>> wrote:
>
> I did it because I was tired of putting (plot-font-size 15) at the
> top of every program that produced a plot for a paper. Also, I think
> it was bad for the "preview" in DrRacket to look different from the
> PDFs. (Some of my plots in DrRacket had legends that badly
> overlapped the data in order to look right in PDF format.) It will
> cause existing PDF plots to have larger text, which could look wrong
> in plots that use the font size workaround. But I think it's the
> right move in the long run.
>
> Here's one thing I could do: document `plot-ps-setup' and export an
> `old-plot-ps-setup' that's the default instance of `ps-setup%', so
> programs that produce plots for papers could start this way:
>
> #lang racket
> (require plot)
> (plot-ps-setup old-plot-ps-setup)
>
> Maybe that parameter is useful after all.
>
> Neil ⊥
>
>
> On 04/03/2014 10:37 AM, Robby Findler wrote:
>
> Is efc46de backwards compatible? (I worry about breaking people's
> papers, specifically.)
>
> Robby
>
>
> On Thu, Apr 3, 2014 at 12:20 AM, <ntoronto at racket-lang.org
> <mailto:ntoronto at racket-lang.org>
> <mailto:ntoronto at racket-lang.__org
> <mailto:ntoronto at racket-lang.org>>> wrote:
>
> ntoronto has updated `master' from 87cfce97f9 to efc46ded6d.
> http://git.racket-lang.org/__plt/87cfce97f9..efc46ded6d
> <http://git.racket-lang.org/plt/87cfce97f9..efc46ded6d>
>
> =====[ 2 Commits
> ]=============================__=========================
> Directory summary:
> 8.2% pkgs/plot-pkgs/plot-lib/plot/__private/common/
> 35.5% pkgs/plot-pkgs/plot-lib/plot/__private/no-gui/
> 12.4% pkgs/plot-pkgs/plot-lib/plot/__private/plot3d/
> 41.2% pkgs/plot-pkgs/plot-test/plot/__tests/
>
> ~~~~~~~~~~
>
> c1550b6 Neil Toronto <neil.toronto at gmail.com
> <mailto:neil.toronto at gmail.com>
> <mailto:neil.toronto at gmail.com
> <mailto:neil.toronto at gmail.com>__>> 2014-04-02 22:06
>
> :
> | Remove unnecessary use of `remove-duplicates'
> :
> M .../plot-lib/plot/private/__plot3d/bsp.rkt |
> 11 +--
> M .../plot-test/plot/tests/__plot3d-bsp-tests.rkt | 91
> ++++++++------------
>
> ~~~~~~~~~~
>
> efc46de Neil Toronto <neil.toronto at gmail.com
> <mailto:neil.toronto at gmail.com>
> <mailto:neil.toronto at gmail.com
> <mailto:neil.toronto at gmail.com>__>> 2014-04-02 23:16
>
> :
> | Changed PDF/PS backend to use 1.0 x 1.0 scaling
> |
> | This makes plotting to a file the same (well, with slight
> differences)
> | regardless of file format. Scaling and other PS options
> are controlled
> | by a `plot-ps-setup' parameter. Not sure how useful that
> is, yet, so
> | it's undocumented.
> :
> M
> pkgs/plot-pkgs/plot-lib/plot/__private/no-gui/plot2d.rkt | 14
> ++++++++------
> M
> pkgs/plot-pkgs/plot-lib/plot/__private/no-gui/plot3d.rkt | 14
> ++++++++------
> M .../plot-lib/plot/private/__common/parameters.rkt
> | 9
> ++++++++-
> M .../plot-lib/plot/private/__contracted/parameters.rkt
> | 2 +-
>
> =====[ Overall Diff
> ]=============================__======================
>
> pkgs/plot-pkgs/plot-lib/plot/__private/common/parameters.rkt
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~__~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ---
> OLD/pkgs/plot-pkgs/plot-lib/__plot/private/common/__parameters.rkt
> +++
> NEW/pkgs/plot-pkgs/plot-lib/__plot/private/common/__parameters.rkt
> @@ -3,6 +3,7 @@
> ;; Parameters that control the look and behavior of plots.
>
> (require racket/contract unstable/parameter-group
> unstable/latent-contract/__defthing
> + racket/class racket/draw
> "contract.rkt"
> "draw.rkt"
> "axis-transform.rkt"
> @@ -107,11 +108,17 @@
>
> ;; Output
>
> +(define default-plot-ps-setup (new ps-setup%))
> +(send default-plot-ps-setup set-margin 0 0)
> +(send default-plot-ps-setup set-scaling 1 1)
> +
> (defparam plot-new-window? boolean? #f)
> (defparam plot-jpeg-quality (integer-in 0 100) 100)
> (defparam plot-ps/pdf-interactive? boolean? #f)
> +(defparam plot-ps-setup (is-a?/c ps-setup%)
> default-plot-ps-setup)
>
> -(define-parameter-group plot-output (plot-new-window?
> plot-jpeg-quality plot-ps/pdf-interactive?))
> +(define-parameter-group plot-output
> + (plot-new-window? plot-jpeg-quality plot-ps/pdf-interactive?
> plot-ps-setup))
>
> ;; Labels
>
>
>
> pkgs/plot-pkgs/plot-lib/plot/__private/contracted/parameters.__rkt
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~__~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~__~~
> ---
> OLD/pkgs/plot-pkgs/plot-lib/__plot/private/contracted/__parameters.rkt
> +++
> NEW/pkgs/plot-pkgs/plot-lib/__plot/private/contracted/__parameters.rkt
> @@ -28,7 +28,7 @@
> plot3d-samples
> plot3d-angle plot3d-altitude
> plot3d-ambient-light plot3d-diffuse-light?
> plot3d-specular-light?
> - plot-new-window? plot-jpeg-quality plot-ps/pdf-interactive?
> + plot-new-window? plot-jpeg-quality plot-ps/pdf-interactive?
> plot-ps-setup
> plot-title
> plot-x-label plot-y-label plot-z-label
> plot-x-far-label plot-y-far-label plot-z-far-label
>
> pkgs/plot-pkgs/plot-lib/plot/__private/no-gui/plot2d.rkt
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~__~~~~~~~~~~~~~~~~~~~~~~~~
> ---
> OLD/pkgs/plot-pkgs/plot-lib/__plot/private/no-gui/plot2d.rkt
> +++
> NEW/pkgs/plot-pkgs/plot-lib/__plot/private/no-gui/plot2d.rkt
> @@ -112,12 +112,14 @@
> [(ps pdf svg)
> (define dc
> (case real-kind
> - [(ps) (new post-script-dc%
> - [interactive (plot-ps/pdf-interactive?)]
> [parent #f] [use-paper-bbox #f]
> - [as-eps #t] [width width] [height height]
> [output output])]
> - [(pdf) (new pdf-dc%
> - [interactive (plot-ps/pdf-interactive?)]
> [parent #f] [use-paper-bbox #f]
> - [width width] [height height]
> [output output])]
> + [(ps) (parameterize ([current-ps-setup
> (plot-ps-setup)])
> + (new post-script-dc%
> + [interactive
> (plot-ps/pdf-interactive?)]
> [parent #f] [use-paper-bbox #f]
> + [as-eps #t] [width width] [height
> height]
> [output output]))]
> + [(pdf) (parameterize ([current-ps-setup
> (plot-ps-setup)])
> + (new pdf-dc%
> + [interactive
> (plot-ps/pdf-interactive?)]
> [parent #f] [use-paper-bbox #f]
> + [width width] [height height] [output
> output]))]
> [(svg) (new svg-dc%
> [width width] [height height] [output
> output] [exists 'truncate/replace])]))
> (define-values (x-scale y-scale) (send dc
> get-device-scale))
>
> pkgs/plot-pkgs/plot-lib/plot/__private/no-gui/plot3d.rkt
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~__~~~~~~~~~~~~~~~~~~~~~~~~
> ---
> OLD/pkgs/plot-pkgs/plot-lib/__plot/private/no-gui/plot3d.rkt
> +++
> NEW/pkgs/plot-pkgs/plot-lib/__plot/private/no-gui/plot3d.rkt
> @@ -129,12 +129,14 @@
> [(ps pdf svg)
> (define dc
> (case real-kind
> - [(ps) (new post-script-dc%
> - [interactive (plot-ps/pdf-interactive?)]
> [parent #f] [use-paper-bbox #f]
> - [as-eps #t] [width width] [height height]
> [output output])]
> - [(pdf) (new pdf-dc%
> - [interactive (plot-ps/pdf-interactive?)]
> [parent #f] [use-paper-bbox #f]
> - [width width] [height height]
> [output output])]
> + [(ps) (parameterize ([current-ps-setup
> (plot-ps-setup)])
> + (new post-script-dc%
> + [interactive
> (plot-ps/pdf-interactive?)]
> [parent #f] [use-paper-bbox #f]
> + [as-eps #t] [width width] [height
> height]
> [output output]))]
> + [(pdf) (parameterize ([current-ps-setup
> (plot-ps-setup)])
> + (new pdf-dc%
> + [interactive
> (plot-ps/pdf-interactive?)]
> [parent #f] [use-paper-bbox #f]
> + [width width] [height height] [output
> output]))]
> [(svg) (new svg-dc%
> [width width] [height height] [output
> output] [exists 'truncate/replace])]))
> (define-values (x-scale y-scale) (send dc
> get-device-scale))
>
> pkgs/plot-pkgs/plot-lib/plot/__private/plot3d/bsp.rkt
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~__~~~~~~~~~~~~~~~~~~~~~
> --- OLD/pkgs/plot-pkgs/plot-lib/__plot/private/plot3d/bsp.rkt
> +++ NEW/pkgs/plot-pkgs/plot-lib/__plot/private/plot3d/bsp.rkt
> @@ -499,8 +499,7 @@
> (cond
> [(empty? ps) #f]
> [else
> - (define vs (remove-duplicates (bsp-polys->vertices ps)))
> - (define axes (vertices->axes vs))
> + (define axes (vertices->axes (bsp-polys->vertices ps)))
> (define center (list->flvector (map axis-mid axes)))
>
> ;; Planes defined by neighboring polygon vertices
> @@ -530,8 +529,7 @@
> (cond
> [(empty? ls) #f]
> [else
> - (define vs (remove-duplicates (bsp-lines->vertices ls)))
> - (define axes (vertices->axes vs))
> + (define axes (vertices->axes (bsp-lines->vertices ls)))
> (define center (list->flvector (map axis-mid axes)))
>
> ;; Planes defined by line segments and basis vectors
> (i.e.
> one basis in normal is zero)
> @@ -560,9 +558,8 @@
> (cond
> [(and (empty? ls) (empty? ps)) #f]
> [else
> - (define vs (remove-duplicates (append (append* (map
> lines-vertices ls))
> - (append* (map
> points-vertices ps)))))
> - (define axes (vertices->axes vs))
> + (define axes (vertices->axes (append (append* (map
> lines-vertices ls))
> + (append* (map
> points-vertices ps)))))
> (define center (list->flvector (map axis-mid axes)))
>
> (: try-nondisjoint-split (-> (U #f BSP-Tree)))
>
> pkgs/plot-pkgs/plot-test/plot/__tests/plot3d-bsp-tests.rkt
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~__~~~~~~~~~~~~~~~~~~~~~~~~~~
> ---
> OLD/pkgs/plot-pkgs/plot-test/__plot/tests/plot3d-bsp-tests.__rkt
> +++
> NEW/pkgs/plot-pkgs/plot-test/__plot/tests/plot3d-bsp-tests.__rkt
> @@ -1,23 +1,5 @@
> #lang racket
>
> -#|
> -TODO
> -
> -BSP
> - - deal better with polygon + many non-polygon shapes
> - - avoid more recomputation in build-bsp3d (i.e. precompute
> bounding and central planes)
> - - make middle shapes in bsp-node a BSP-Tree
> - - speed up disjoint splitting
> -
> -insert line segments into BSP as polygonal clipping regions?
> -
> -slow parts
> - - 22.3: build-bsp-tree
> - - 15.6: contour renderer proc
> - - 12.7: clip-polygon
> - - 6.0: bin-shapes
> -|#
> -
> (require plot
> (except-in plot/utils sum flsum sample)
> math
> @@ -95,41 +77,42 @@ slow parts
> (points3d xyzs #:sym 'dot)))))
>
> (time
> - (plot3d
> - (list (contour-intervals3d
> - (λ (x y)
> - (* x (+ 0.1 y)))
> - -1 1 -1 1
> - #:samples 41
> - #:alphas '(0.85)
> - ;#:alpha 0.75
> - ;#:line-width 2
> - ;#:line-widths '(2)
> - ;#:line-styles '(transparent)
> - #:contour-widths '(2)
> - ;#:color 1
> - ;#:label ""
> - )
> -
> - (surface3d
> - (λ (x y)
> - (* (- (* (flnormal-pdf 0.0 0.2 (fl x) #f)
> - (flnormal-pdf 0.0 0.2 (fl y) #f))
> - 0.7)
> - 0.4))
> - -1 1 -1 1
> - #:samples 40
> - ;#:alphas '(0.75)
> - #:alpha 0.95
> - #:color "plum"
> - #:line-color 6
> - ;#:line-style 'transparent
> - ;#:line-width 2
> - ))
> - #:x-min -1 #:x-max 1
> - #:y-min -1 #:y-max 1
> - ;#:out-file "test.pdf"
> - ))
> + (for/last ([_ (in-range 1)])
> + (plot3d
> + (list (contour-intervals3d
> + (λ (x y)
> + (* x (+ 0.1 y)))
> + -1 1 -1 1
> + #:samples 41
> + #:alphas '(0.85)
> + ;#:alpha 0.75
> + ;#:line-width 2
> + ;#:line-widths '(2)
> + ;#:line-styles '(transparent)
> + #:contour-widths '(2)
> + ;#:color 1
> + ;#:label ""
> + )
> +
> + (surface3d
> + (λ (x y)
> + (* (- (* (flnormal-pdf 0.0 0.2 (fl x) #f)
> + (flnormal-pdf 0.0 0.2 (fl y) #f))
> + 0.7)
> + 0.4))
> + -1 1 -1 1
> + #:samples 40
> + ;#:alphas '(0.75)
> + #:alpha 0.95
> + #:color "plum"
> + #:line-color 6
> + ;#:line-style 'transparent
> + ;#:line-width 2
> + ))
> + #:x-min -1 #:x-max 1
> + #:y-min -1 #:y-max 1
> + ;#:out-file "test.pdf"
> + )))
>
> (plot3d (list (surface3d * -1 1 -1 1 #:samples 6 #:alpha 0.75
> #:color 1)
> (surface3d (λ (x y) (+ 0.1 (* x y))) -1 1 -1 1
> #:samples 6 #:alpha 0.75 #:color 2)
> @@ -140,7 +123,7 @@ slow parts
> (plot3d (list
> (isosurface3d (λ (x y z) (+ (- 1 x) (- 1 y) (- z
> 1.5))) 0
> #:alpha 0.85 #:color 2 #:line-color 2
> - #:samples 2)
> + #:samples 4)
> (discrete-histogram3d (list (vector 'a 'a 1)
> (vector 'a 'b 2)
> (vector 'b 'b 3))
>
>
>
>