如何使用 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
我正在尝试创建一个条形图,显示特定收入家庭收到了多少资金。为此,我使用以下代码:
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