lepennec / ggwordcloud

A word cloud geom for ggplot2
https://lepennec.github.io/ggwordcloud/
GNU General Public License v3.0
172 stars 8 forks source link

Color issue when used together with dark theme #25

Open AndhikaWB opened 1 month ago

AndhikaWB commented 1 month ago

Text doesn't show when this library is used together with ggdark theme

library(ggdark)

data("love_words_small")
ggplot(love_words_small, aes(label = word, size = speakers)) +
  geom_text_wordcloud() +
  scale_size_area(max_size = 30) +
  dark_theme_minimal()

When not used with ggdark (ignore the overlapping text, too lazy to fix) image


When used with ggdark (see code above) image


Changing color to white via the color parameter also doesn't seem to produce white text, it will produce red/orange text instead

data("love_words_small")
ggplot(love_words_small, aes(label = word, size = speakers, color = 'white')) +
  geom_text_wordcloud() +
  scale_size_area(max_size = 40) +
  dark_theme_minimal()

image

AndhikaWB commented 1 month ago

Tested on both cairo (png) and svglite (svg) renderer

Here is my example Quarto markdown (.qmd) header:

---
title: Test
author: AndhikaWB
date: last-modified
date-format: long
format: gfm
knitr:
  opts_chunk:
    echo: true
    results: hold
    dev: svglite
    dev.args:
      scaling: 1.25
---
lepennec commented 1 month ago

Let me look at this issue.

AndhikaWB commented 1 month ago

Oh wait, the scale_color_gradient works just fine, I just forgot to add the color argument on the ggplot function (gonna edit the original post soon)

The red/orange text issue when using color = 'white', however, is still reproducible

lepennec commented 1 month ago

For the color = 'white' issue, you should put color outside aes.

That said, it seems that there is a strange issue with the current library stack, as I cannot reproduce my own examples...

AndhikaWB commented 1 month ago

Hi @lepennec

I tried putting color = 'white' outside aes but the font color is now all black/blank (since the background is black too)

data("love_words_small")
ggplot(love_words_small, aes(label = word, size = speakers), color = 'white') +
  geom_text_wordcloud() +
  scale_size_area(max_size = 40) +
  dark_theme_minimal()

For now I'm using scale_color_gradient or other scale function as workaround