GithubHelp home page GithubHelp logo

Comments (5)

pvictor avatar pvictor commented on September 22, 2024

Hello,

Quick answer to help you (there's a point in your question that is more complicated, I'll respond later).

In your formatter JavaScript code, a semicolon is missing, e.g. :

JS("function(value) {return value + '%';}")

You can also customize numeric format in tooltip / axes with format_num() function, complete example:

library(ggplot2)
library(scales)
library(dplyr)
library(apexcharter)

data("mpg")
n_manufac_year <- count(mpg, manufacturer, year) %>%
  group_by(manufacturer) %>% 
  mutate(pct = n / sum(n)) # dont divide by 100

apex(data = n_manufac_year, type = "column", mapping = aes(x = manufacturer, y = pct, fill = year)) %>% 
  ax_chart(stacked = TRUE) %>% 
  ax_yaxis(
    max = 1,
    labels = list(
      formatter = format_num(".0%") # no decimal
    )
  ) %>% 
  ax_tooltip(
    y = list(
      formatter = format_num(".2%") # 2 decimals
    )
  )

The more complex things to do in tooltip is to add another value not used in chart, in your case the absolute value after the percentage. It would be a neat functionnality, I have to think how to implement this in a smart way.

Victor

from apexcharter.

u909090 avatar u909090 commented on September 22, 2024

Thanks for your help Victor !

I see the trick.
It seems to be possible in echarts4r, I was simply wondering if it followed the same logic here.

from apexcharter.

pvictor avatar pvictor commented on September 22, 2024

You're welcome! No that's a little different in Apexcharts.

A solution in your case is to do:

apex(
  data = n_manufac_year, 
  type = "column", 
  mapping = aes(
    x = manufacturer,
    y = pct, fill = year, 
    # Custom text to be displayed in tooltip
    custom_tooltip = paste0("Percentage: ", round(pct * 100), "% (total: ", n, ")")
  )
) %>% 
  ax_chart(stacked = TRUE) %>%
  ax_tooltip(
    y = list(
      # use custom text
      formatter = JS(
        "function(value, series) {return series.w.config.series[series.seriesIndex].data[series.dataPointIndex].custom_tooltip;}"
      )
    )
  )

But I'll love to implement something more user-friendly and robust across type of charts...

Victor

from apexcharter.

u909090 avatar u909090 commented on September 22, 2024

Thanks Victor, it works great !

Implementing an easier formatter syntax for people who don't know JS would be useful for sure.

But also simply providing a link in the vignette to try to understand the JS syntax would already be very useful as well.
When you go on this page, and click on the JS function under the 'Bar chart' section it redirects here. But to be honest I don't really understand the message.

from apexcharter.

u909090 avatar u909090 commented on September 22, 2024

Hi Victor,

Related to this issue: is there a way to vertical-align up the series name in a tooltip generated from multiple custom tooltips?
Example:

apex(
  data = n_manufac_year, 
  type = "column", 
  mapping = aes(
    x = manufacturer,
    y = pct, fill = year, 
    # Custom text to be displayed in tooltip
    custom_tooltip = paste0("Percentage= ", round(pct * 100), "%"),
    custom_tooltip_N = paste0("total=", n)
  )
) %>% 
  ax_chart(stacked = TRUE) %>%
  ax_tooltip(
    y = list(
      # use custom text
      formatter = JS(
        "function(value, series) {return(
             series.w.config.series[series.seriesIndex].data[series.dataPointIndex].custom_tooltip + '<br/>' + 
             series.w.config.series[series.seriesIndex].data[series.dataPointIndex].custom_tooltip_N)}"
      )
    )
  )

If not possible, could we remove the series name completely?

from apexcharter.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.