我是一位有用的助手,可以为您翻译文本。
目标:修复轴并添加工具提示,同时提供日期(格式为1984)和值(格式为40%)。
如果我能解决1和2,我会非常高兴。但是,如果有人有建议,这里还有另一个不那么重要的问题:
当悬停在线条上时,是否可以将“Top 10%”线标签添加到工具提示中?
从以下链接下载数据后:https://gist.github.com/ptoche/872a77b5363356ff5399,创建了一个数据框:
我在使用
供参考,以下是 ggplot 代码:
要在图表中添加图例:
我有一些使用ggplot2
创建的图表,我想将它们嵌入到Web应用程序中:我想通过工具提示增强这些图表。我已经研究了几种选择。我目前正在尝试rCharts
库以及其他一些库,比如dimple plots。
以下是原始的ggplot:
- 在将y轴格式化为百分比后,数据被改变了。
- 在将x轴格式化为正确呈现日期后,打印的标签太多了。
目标:修复轴并添加工具提示,同时提供日期(格式为1984)和值(格式为40%)。
如果我能解决1和2,我会非常高兴。但是,如果有人有建议,这里还有另一个不那么重要的问题:
当悬停在线条上时,是否可以将“Top 10%”线标签添加到工具提示中?
从以下链接下载数据后:https://gist.github.com/ptoche/872a77b5363356ff5399,创建了一个数据框:
df <- read.csv("ps-income-shares.csv")
基本的 dimple 图表创建方式如下:
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
提供信息,上述图表基于Thomas Piketty和Emmanuel Saez在他们对美国最高收入研究中汇总的数据。可以在他们的网站上找到更多数据,例如:
http://elsa.berkeley.edu/users/saez/
编辑:
这是Ramnath的解决方案截图,已添加标题并调整了轴标签。感谢Ramnath!
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"
)
保存rchart:
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')
devtools::install_github("rCharts", "ramnathv", ref = "dev")
进行更新,非常感谢 Ramnath! - PatrickTafterScript
。 - Ramnath