将轴刻度标签格式化为绘图中的百分比
Posted
技术标签:
【中文标题】将轴刻度标签格式化为绘图中的百分比【英文标题】:Format axis tick labels to percentage in plotly 【发布时间】:2017-11-22 03:26:57 【问题描述】:我正在plotly
中创建条形图,其中 y 轴代表 0-1 内的百分比或份额。 y 轴显示为 0.05 而不是 5.0%。
有没有办法将 y 轴刻度标签显示为%##
?
我尝试过使用tickformat = "%"
,但这似乎不起作用。
【问题讨论】:
scale_y_continuous(labels = scales::percent_format())
有效吗? (我假设您使用的是 ggplot2,当您不发布可重现的示例时很难判断)。
tickformat = "%" 确实有效。我编写的函数中有一个错误。这有效: layout(yaxis = list(title = "", tickformat = "%"), xaxis = list(title = ""), barmode = 'group')
【参考方案1】:
您可以使用layout
在plotly
中执行此操作:
p <- p %>%
layout(yaxis = list(tickformat = "%"))
或者,如果您只想添加 %
并且不重新格式化数字,那么:
p <- p %>%
layout(yaxis = list(ticksuffix = "%"))
示例:
这是一个示例,展示了如何根据需要编辑 y 轴刻度(查找下图中使用的数据)。
我有这段代码和下图:
plot_ly(z = eegmean$value, x = eegmean$xproj, y= eegmean$yproj,
type = "contour") %>%
layout(yaxis = list(range = c(0, 1)))
然后我修改如下,这给了我想要的输出:
plot_ly(z = eegmean$value, x = eegmean$xproj, y= eegmean$yproj*100,
type = "contour") %>%
layout(yaxis = list(ticksuffix = "%", range = c(0, 100)))
数据:
eegmean <-
structure(list(xproj = c(-4.36892281283989, 4.35956894475236,
-3.66712823067503, 3.66912002532953, -6.74087785458615, 6.7287326256584,
-3.06883681930631, 3.0727815538517, -3.05334720378955, 3.0570879596344,
-3.79278629306119, 3.79086730312228, -7.07653326595358, 7.06235689946147,
-7.90472265899708, 7.886291820964), yproj = c(0.0590663494057822,
0.0624572214558794, 4.86096691858553, 4.85057791325599, 5.19791938823655,
5.18984777332146, 9.40308855517187, 9.39510236056629, -9.35605694441838,
-9.34632728162916, -4.81178659276704, -4.80386416586077, -5.3889955653921,
-5.37981449730605, -0.00583969391994209, -0.00704057111565196
), value = c(0.0606980290462218, 0.0608382874925463, 0.0517195368020531,
0.0531772440361526, 0.0204264049886253, 0.0177325467223879, 0.0392064861131087,
0.0425640060844722, 0.0788962178010734, 0.0740093285228833, 0.0749098131481143,
0.0759725415557911, 0.0688015959610801, 0.0762816652838652, 0.0548817124454006,
0.0646901969995537)), .Names = c("xproj", "yproj", "value"), row.names = c("C3",
"C4", "F3", "F4", "F7", "F8", "FP1", "FP2", "O1", "O2", "P3",
"P4", "P7", "P8", "T7", "T8"), class = "data.frame")
【讨论】:
【参考方案2】:plotly
documentation 将我们引导至 this 页面,该页面包含可用格式选项的完整列表。
在这种情况下,像5%
、tickformat='%'
这样的格式化百分比就足够了。如果您也想显示小数点,那么 '.n%'
之类的东西就可以解决问题(将 n 替换为小数点后所需的位数)。
上面引用的 github 页面包含更多格式选项。干杯!
【讨论】:
以上是关于将轴刻度标签格式化为绘图中的百分比的主要内容,如果未能解决你的问题,请参考以下文章