R: интерактивные графики (всплывающие подсказки): графическая диаграмма rCharts: ось форматирования

У меня есть несколько диаграмм, созданных сggplot2 который я хотел бы встроить в веб-приложение: я хотел бы дополнить графики всплывающими подсказками. Я рассмотрел несколько вариантов. В настоящее время я экспериментирую сrCharts библиотека и, среди прочего, ямочки на участках.

Вот оригинальный ggplot:

Вот первая попытка перенести это на график с ямочками:

У меня есть несколько вопросов:

после форматирования оси Y с процентами данные изменяются.

после форматирования оси X для правильного отображения дат печатается слишком много этикеток.

Я не привязан к диаграммам с ямочками, поэтому, если есть другие варианты, которые позволяют упростить настройку форматов осей, я был бы рад узнать. (Диаграммы Морриса тоже выглядят неплохо, но их настройка выглядит еще сложнее, не так ли?)

Задача: Зафиксируйте оси и добавьте всплывающие подсказки, в которых указаны и дата (в формате 1984), и значение (в формате 40%).

Если бы я мог исправить 1 и 2, я был бы очень счастлив. Но вот другой, менее важный вопрос, если у кого-то есть предложения:

Могу ли я добавить метки линий («Лучшие 10%») к подсказкам при наведении курсора на линии?

После загрузки данных из:https://gist.github.com/ptoche/872a77b5363356ff5399создается кадр данных:

df <- read.csv("ps-income-shares.csv")

Основной димпл сюжет создается с помощью:

library("rCharts")
p <- dPlot(
    value ~ Year,
    groups = c("Fractile"),
    data = transform(df, Year = as.character(format(as.Date(Year), "%Y"))),
    type = "line",
    bounds = list(x = 50, y = 50, height = 300, width = 500)
)

Пока основной, пока все хорошо. Однако следующая команда, предназначенная для преобразования y-данных в проценты, изменяет данные:

p$yAxis(type = "addMeasureAxis", showPercent = TRUE)

Что я делаю не так сshowPercent?

Для справки вот код ggplot:

library("ggplot2")
library("scales")
p <- ggplot(data = df, aes(x = Year, y = value, color = Fractile))
p <- p + geom_line()
p <- p + theme_bw()
p <- p + scale_x_date(limits = as.Date(c("1911-01-01", "2023-01-01")), labels = date_format("%Y"))
p <- p + scale_y_continuous(labels = percent)
p <- p + theme(legend.position = "none")
p <- p + geom_text(data = subset(df, Year == "2012-01-01"), aes(x = Year, label = Fractile, hjust = -0.2), size = 4)
p <- p + xlab("")
p <- p + ylab("")
p <- p + ggtitle("U.S. top income shares (%)")
p

Для информации приведенная выше таблица основана на данных, собранныхТомас Пикетти а такжеЭммануэль Саез в их исследовании США самые высокие доходы. Данные и многое другое можно найти на их веб-сайте, например,

http://elsa.berkeley.edu/users/saez/

http://piketty.pse.ens.fr/en/

РЕДАКТИРОВАТЬ:

Вот скриншот решения Рамната с добавленным заголовком и измененными метками оси. Спасибо Рамнатх!

p$xAxis(inputFormat = '%Y-%m-%d', outputFormat = '%Y')
p$yAxis(outputFormat = "%")
p$setTemplate(afterScript = "
  <script>
    myChart.axes[0].timeField = 'Year'
    myChart.axes[0].timePeriod = d3.time.years
    myChart.axes[0].timeInterval = 10
    myChart.draw()
    myChart.axes[0].titleShape.remove()  // remove x label
    myChart.axes[1].titleShape.remove()  // remove y label
    myChart.svg.append('text')           // chart title
        .attr('x', 40)
        .attr('y', 20)
        .text('U.S. top income shares (%)')
        .style('text-anchor','beginning')
        .style('font-size', '100%')
        .style('font-family','sans-serif')
  </script>               
")
p

Чтобы изменить (а не удалить) метки осей, например:

myChart.axes[1].titleShape.text('Year')

Чтобы добавить легенду к сюжету:

p$set(width = 1000, height = 600)
p$legend(
  x = 580,
  y = 0,
  width = 50,
  height = 200,
  horizontalAlign = "left"
)

Чтобы сохранить график:

p$save("ps-us-top-income-shares.html", cdn = TRUE)

Альтернатива, основанная на библиотеке nvd3, может быть получена (без всяких причудливых вещей) с помощью:

df$Year <- strftime(df$Year, format = "%Y")
n <- nPlot(data = df, value ~ Year, group = 'Fractile', type = 'lineChart')

Ответы на вопрос(2)

Ваш ответ на вопрос