【问题标题】:Why Matplotlib draws a straight line from last value to the x-axis in a loglog() plot?为什么 Matplotlib 在 loglog() 图中从最后一个值到 x 轴绘制一条直线?
【发布时间】:2020-03-01 20:40:55
【问题描述】:

我正在尝试为我的数据集使用 loglog 图,但我希望我的绘图线在每组的最后一个 y 值处结束,但是 matplotlib 用一条直线将 loglog 图完成到 x 轴,请参阅here.

但我希望我的情节像this,以确切的结束值结束。

我有相同的 x 轴数组,但有 4 个不同的 y 值,所以我这样绘制图表:

plt.loglog(x,y1,x,y2,x,y3,x,y4)

我从 txt 文件创建我的 y 数组,如下所示:

with open(os.path.join(root,name),'r') as fin:
    y1 = []
    for q in fin:
        y1.append(float(q.split(' ')[1]))

如何从 y1 数组中删除零值?

值是这样的:

1 0.535025
2 0.116237
4 0.0336809
8 0.00814949
16 0.00159025
32 0.000202602
64 1.00662e-05
128 7.68864e-08
256 0
512 0
1024 0
2048 0
4096 0
8192 0
16384 0

【问题讨论】:

  • 当您的最后一点为零时会发生这种情况(不能以对数刻度显示)。只要确保不要绘制0,那么该行将在最后一点结束。
  • 我添加了创建 y 数组的方法,您能帮我删除零吗?

标签: python matplotlib


【解决方案1】:

好的,我只是添加了以下代码来用 NaN 值替换零值,这样 loglog() 绘图就不会使用 NaN 值:

for i in range(0,15):
    if y1[i] == 0:
        y1[i] = np.nan

注意:我在 y1 数组中有 15 个值,这就是为什么我的范围是 0 到 15。

所以问题解决了!我得到了我想要的情节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 2020-05-06
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多