【问题标题】:Plot piecewise data, x-axis limits绘制分段数据,x 轴范围
【发布时间】:2019-02-20 15:10:38
【问题描述】:

我使用 Julia 和 Plots 来生成我的图。

我想绘制数据 (A,B),并且我知道所有有趣的数据都位于 A 的两个区域中。这两个区域应该在一个图中相互绘制。 我的 A 数据是均匀分布的。所以我所做的就是剪下我有趣的部分并将它们粘在一个物体上。

我的问题是我不知道如何操纵 x 轴上的刻度。 当我只是根据它们的数组索引绘制 B 数据时,我基本上得到了我想要的形式。我只需要 x 轴上 A 的数字。

我在这里举一个玩具例子

using Plots

N=5000
B=rand(N)
A=(1:1:N)
xl_1=100
xu_1=160
xl_2=600
xu_2=650

A_new=vcat(A[xl_1:xu_1],A[xl_2:xu_2])
B_new=vcat(B[xl_1:xu_1],B[xl_2:xu_2])

plot(A_new,B_new)     # This leaves the spacing between the data explicit

plot(B_new)           # This creats basically the right spacing, but   
                      # without the right x axis grid

我没有发现如何使用两个连续的 xlim,因此我尝试这种方式。

【问题讨论】:

  • 到目前为止你尝试过什么?你的代码是什么样的?
  • 我加了一个小例子。我找不到提示如何直接处理数据 A 和 B。因此,我手动分离数据并根据索引进行绘图。

标签: julia


【解决方案1】:

你不能通过两个连续的 xlim,因为你不能在轴上休息。这是 Plots 中的设计。 所以你的可能性是:1)有两个具有不同部分的子图,或者2)用索引绘制,只需更改轴标签。 第二种方法会使用xticks = ([1, 50, 100, 150], ["1", "50", "600", "650"] 之类的命令,但我推荐第一种,因为严格来说,这是一种更正确的数据显示方式:

plot(
       plot(A[xl_1:xu_1], B[xl_1:xu_1], legend = false),
       plot(A[xl_2:xu_2], B[xl_2:xu_2], yshowaxis = false),
       link = :y
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    相关资源
    最近更新 更多