gpt4 book ai didi

Python matplot-ting 使用数组附加的曲线奇怪地在较高位置显示较低的值?

转载 作者:太空宇宙 更新时间:2023-11-03 23:55:20 26 4
gpt4 key购买 nike

我有一个像下面这样的简单文件,上面有一些文本和数字:

some text pre 69 some text post
some text pre 63 some text post
some text pre 62 some text post
some text pre 175 some text post
some text pre 57 some text post
some text pre 59 some text post
some text pre 63 some text post
some text pre 58 some text post
some text pre 50 some text post
some text pre 45 some text post
some text pre 46 some text post
some text pre 39 some text post
some text pre 36 some text post
some text pre 39 some text post
some text pre 35 some text post
some text pre 42 some text post
some text pre 36 some text post
some text pre 35 some text post
some text pre 31 some text post
some text pre 34 some text post
some text pre 28 some text post
some text pre 110 some text post
some text pre 25 some text post
some text pre 36 some text post
some text pre 35 some text post
some text pre 21 some text post
some text pre 22 some text post
some text pre 21 some text post
some text pre 34 some text post
some text pre 32 some text post
some text pre 36 some text post
some text pre 34 some text post
some text pre 20 some text post
some text pre 18 some text post
some text pre 20 some text post
some text pre 35 some text post
some text pre 31 some text post
some text pre 35 some text post
some text pre 37 some text post
some text pre 22 some text post
some text pre 24 some text post
some text pre 19 some text post
some text pre 25 some text post
some text pre 21 some text post
some text pre 19 some text post
some text pre 20 some text post
some text pre 19 some text post
some text pre 22 some text post
some text pre 21 some text post
some text pre 20 some text post
some text pre 22 some text post
some text pre 18 some text post
some text pre 20 some text post
some text pre 21 some text post
some text pre 20 some text post
some text pre 20 some text post
some text pre 19 some text post
some text pre 21 some text post
some text pre 18 some text post
some text pre 20 some text post
some text pre 20 some text post
some text pre 20 some text post
some text pre 20 some text post
some text pre 22 some text post
some text pre 23 some text post
some text pre 20 some text post
some text pre 19 some text post
some text pre 20 some text post
some text pre 21 some text post
some text pre 22 some text post
some text pre 18 some text post
some text pre 26 some text post
some text pre 19 some text post
some text pre 20 some text post
some text pre 20 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 2 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 2 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 2 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 2 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 3 some text post
some text pre 2 some text post
some text pre 3 some text post
some text pre 3 some text post

我有 python 脚本,它将文件中的数字解析为一个数组,并根据数字数组绘制图形。简单的。以下是我的 python 脚本。

# Script 1
#!/usr/bin/env python

import re
import matplotlib.pyplot as plt
import os
import sys

def find_between( s, first, last ):
try:
start = s.index( first ) + len( first )
end = s.index( last, start )
return s[start:end]
except ValueError:
return ""

some_text_1 = "some text pre "
some_text_2 = " some text post"

with open("/path/to/file.txt", 'r') as file:
filetext = file.read()

lines = [line for line in filetext.split('\n') if some_text_1 in line]
numbers_array = []

for x in lines:
number_in_string = find_between(x, some_text_1, some_text_2)
if number_in_string:
number = 0
number = number_in_string
numbers_array.append(number)

fig = plt.figure(num=None, figsize=(15, 9), facecolor='w', edgecolor='k')
plt.plot(numbers_array)
plt.ylabel('Learning python')
plt.show()

以下是图表的显示方式,莫名其妙的奇怪!并错误地绘制

Incorrect plot

数值较低的数字如何表示在较高的数字之上?我做错了什么?

但是,如果声明 numbers_array 并像下面修改后的脚本那样内联添加一些数字,那么图表绘制好吗?

# Script 2
#!/usr/bin/env python

import re
import matplotlib.pyplot as plt

numbers_array = [79, 66, 69, 63, 62, 175, 57, 59, 63, 58, 50, 45, 46, 39, 36, 39, 35, 42, 36, 35, 31, 34, 28,
110, 25, 36, 35, 21, 22, 21, 34, 32, 36, 34, 20, 18, 20, 35, 31, 35, 37, 22, 24, 19, 25, 21,
19, 20, 19, 22, 21, 20, 22, 18, 20, 21, 20, 20, 19, 21, 18, 20, 20, 20, 20, 22, 23, 20, 19,
20, 21, 22, 18, 26, 19, 20, 20, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 2, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 48, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4, 4, 4, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3]

fig = plt.figure(num=None, figsize=(15, 9), facecolor='w', edgecolor='k')
plt.plot(numbers_array)
plt.ylabel('Learning python')
plt.show()

以下是当 numbers_array 用随机值硬编码时看起来正确的图。

Correct plot

问题:
Script 1 我做错了什么?

最佳答案

问题是,在第一个脚本中你有一个字符串列表,而不是数字列表。

matplotlib 仍然没有提示的唯一原因是,它默默地建议您绘制类别而不是数字。因此,每个新元素都在下一个 y 水平上绘制,独立于其作为数字的值 - 并且该水平的命名与元素相同。


例子:

example_list = ['2', '0', '3', '4', '2', '23', '-5']

fig, axs = plt.subplots(1, 2, figsize=(10, 5))
axs[0].plot(example_list)
axs[0].set_title("plot(['2', '0', '3', '4', '2', '23', '-5'])")
axs[0].set_ylabel('categories')
axs[1].plot([int(i) for i in example_list])
axs[1].set_title('plot([2, 0, 3, 4, 2, 23, -5])')
axs[1].set_ylabel('numbers')

enter image description here

关于Python matplot-ting 使用数组附加的曲线奇怪地在较高位置显示较低的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57920680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com