如何使用 R plotly 在条形图中的条形末端(而不是居中)放置刻度线和轴标签(或刻度文本)?

How can I position tickmarks and axis labels (or ticktext) at the end of bars (rather than centered) in a bar chart using R plotly?

我正在尝试创建一个条形图,显示特定收入家庭收到了多少资金。为此,我使用以下代码:

chart <- plot_ly(funds,
                  x = ~income_group, 
                  y = ~FundsSent, 
                  type = "bar")

chart <- chart %>% layout(title = '<b>Fund Distribution by Income</b>',
                            xaxis = list(
                              title = list(text='Income', standoff = 10), 
                              ticks="outside", tickson="boundaries"),
                            yaxis = list(
                              title = list(text='Funds paid', standoff = 10)),
                            bargap = 0.05)

现在,使用 "tickson=boundaries" 我设法在每个栏的末尾(而不是居中)获得刻度线,但标签仍在列的中间。

Bar chart showing missplacement of axis labels

这说明了错误的故事,因为看起来第一列显示的是支付给收入为 0 的人的资金,而实际上它显示的是支付给收入为 0 到 5,000 的人的资金。

我也尝试过手动设置 X 轴标签,使用 tickmode="array"ticktext 并手动设置 tickvals 但是,虽然这会使刻度与文本对齐,但它会再次使刻度线居中(好像 tickson="boundaries" 参数不再起作用了)。

对绝望和沮丧的经济学家有什么帮助吗?

实际上,我只是使用 tickson="boundaries" 来设置柱之间的刻度;将 tickvals 设置为左​​侧间隔范围的一半以将刻度线从中心移开,并将标签设置为 ticktext

之前它不起作用的原因是因为我写 tickvals 时没有使用“”(我认为,数字而不是文本,我不需要引号)。这就是我的代码现在的样子,并且有效:

chart %>% layout(title = '<b>Fund Distribution by Income</b>',
                 xaxis = list(
                   title = list(text='<b>Income</b>', standoff = 10),
                   ticks="outside", tickson="boundaries",
                   ticktext=list("0", "5,000", "10,000", "15,000", "20,000"), #label
                   tickvals=list("-2500", "2500", "7500", "12500", "17500")) #position