【问题标题】:Gridlines in Julia PyPlotJulia PyPlot 中的网格线
【发布时间】:2016-03-02 01:57:43
【问题描述】:

我在 Julia 中使用“PyPlot”包,我想在指定位置添加网格线。我对 Python/Matlab 不够熟悉,无法使用他们的文档页面来提供帮助——Julia 中的命令不同。我想要一个基本图,两个轴上的网格线间隔为 1:

using PyPlot
fig=figure("Name")
grid("on")
scatter([1,2,3,4],[4,5,6,7]) 

帮助感谢...

【问题讨论】:

    标签: matplotlib julia


    【解决方案1】:

    PyPlot 只是Matplotlib 的接口,所以命令 自定义网格是 Matplotlib 的命令。

    在两个轴上以 1 的间隔(对于给定数据)配置网格线的一种方法是:

    using PyPlot
    
    fig=figure(figsize=[6,3])
    ax1=subplot(1,1,1) # creates a subplot with just one graphic
    
    ax1[:xaxis][:set_ticks](collect(1:4))  # configure x ticks from 1 to 4
    ax1[:yaxis][:set_ticks](collect(4:7))  # configure y ticks from 4 to 7
    
    grid("on")
    scatter([1,2,3,4],[4,5,6,7])
    

    此代码在IJulia 的笔记本中进行了测试,并产生以下输出:

    看看Various Julia plotting examples using PyPlot

    使用 Julia 版本 0.4.3 测试

    【讨论】:

    • 这很有帮助!作为进一步的要求,是否可以删除刻度线标签(我想要一个细网格,我不希望轴上堆满数字)...谢谢!
    • 当然!要删除刻度标签,您可以使用命令:ax1[:xaxis][:set_ticklabels]([])ax1[:yaxis][:set_ticklabels]([]),并删除刻度标记:ax1[:xaxis][:set_tick_params](which="major",length=0)ax1[:yaxis][:set_tick_params](which="major",length=0)。我还更新了答案,提供了一些 PyPlot 使用示例的链接。我希望这会有所帮助:)
    【解决方案2】:

    可以通过将数组传递给xticks()yticks() 函数来控制绘制网格线的值。

    一个简单的例子:

    using PyPlot
    fig=figure("Name")
    grid("on")
    
    xticks(0:5)
    yticks(3:8)
    
    scatter([1,2,3,4],[4,5,6,7])
    

    如果您希望它更灵活,您可以根据您的数据计算出限制并将滴答间隔设置为其他值。

    一种更动态的方式来配置网格的 x 轴可能是:

    x_data = [1,2,3,4]
    x_tick_interval = 2;
    x_tick_start = minimum(xdata)
    x_tick_end   = maximum(xdata)
    xticks(x_tick_start:x_tick_interval:x_tick_end)
    

    【讨论】:

      猜你喜欢
      • 2015-08-09
      • 1970-01-01
      • 1970-01-01
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      • 1970-01-01
      相关资源
      最近更新 更多