Plot Julia中的条形图:更改xticks的位置

Plot Julia中的条形图:更改xticks的位置,plot,julia,Plot,Julia,我试图在朱莉娅身上完成这项任务,但我很难做到 如果我这样做 v = [6 12 17 21 28 25 19 15]; bar(v') 我要一张条形图。但是,我正在尝试将XTICK与条的左边缘对齐,就像链接中所做的那样。我试图寻找,但找不到解决办法。我可以得到提示吗?可以使用xaxis将x标签定位在所需位置,并使用xformatted选项格式化值: bar(v', xaxis = ((0.5, 9), 0.5:1:8), bar_width=1, xformatter=v->Int(c

我试图在朱莉娅身上完成这项任务,但我很难做到

如果我这样做

v = [6 12 17 21 28 25 19 15];

bar(v')

我要一张条形图。但是,我正在尝试将XTICK与条的左边缘对齐,就像链接中所做的那样。我试图寻找,但找不到解决办法。我可以得到提示吗?

可以使用
xaxis
将x标签定位在所需位置,并使用
xformatted
选项格式化值:

bar(v', xaxis = ((0.5, 9), 0.5:1:8), bar_width=1, xformatter=v->Int(ceil(v)))

您正在使用哪个绘图库?Julia有很多好的选择,所以在提问时要详细说明

假设您使用的是Plots.jl(可能是与您在问题中显示的语法相匹配的最广泛使用的软件包),这实际上似乎是一个令人惊讶的复杂问题。下面还有一些(毫无帮助的)解释,但作为一种解决方法,我会做一些类似于@attdonna建议的事情:您可以始终将x轴记号作为一个`(位置、值)元组传递,因此

这就是诀窍

---------------------------

现在来看看关于这里的错误的不太有用的解释:从
bar
的docstring来看,将条对齐到边理论上应该在绘图中起作用:

help?> bar

  bar(x,y)
  bar!(x,y)

  Make a bar plot of y vs x.

  Arguments
  ≡≡≡≡≡≡≡≡≡≡≡

    •  bar_position: Symbol. Choose from :overlay (default), :stack. (warning: May not be implemented fully)

    •  bar_width: nothing or Number. Width of bars in data coordinates. When nothing, chooses based on x (or y when orientation = :h).

    •  bar_edges: Bool. Align bars to edges (true), or centers (the default)?
因此,
bar\u edges
似乎是您要查找的关键字。唉,当尝试这一点时,结果是在执行
bar(v',bar\u edges=true)
时没有任何变化。这样做的原因是它们关键字实际上并没有为默认(GR)后端实现-因为绘图支持多个后端,并非所有关键字参数都可用于每个后端;您可以检查哪些后端支持哪些关键字

也就是说,当你

julia> using Plots; pyplot()
Plots.PyPlotBackend()

julia> bar(v', bar_edges = true)
没有任何变化,因此出于某种原因,这似乎不起作用。有趣的是,当传递错误长度的第一个参数(用于x轴位置)时,PyPlot声称支持传递边:

julia> bar([1 2], v')
ERROR: bar recipe: x must be same length as y (centers), or one more than y (edges).
        length(x)=1, length(y)=8
但不幸的是,这似乎也不起作用:

julia> bar(1:9, v')
ERROR: Expects 9 elements in each col of y, found 8.
(事实上,相关部门表示,允许边缘通过是一项任务,因此,这可能是意料之中的事?)

总之,Plots.jl应该很容易做到这一点,但由于某种原因,它似乎已经从裂缝中消失了

julia> bar(1:9, v')
ERROR: Expects 9 elements in each col of y, found 8.