每当两行在 matplotlib 中与 Python 相遇时,如何打印一些东西?
How do I print something whenever two lines meet in matplotlib with Python?
这是我的代码:
import matplotlib.pyplot as plt
import pandas as pd
import urllib
API = 'http://api.example.com'
data = urllib.request.urlopen(API)
df = pd.DataFrame(data)
x = df['x'].tolist()
y1 = df['y1'].tolist()
y2 = df['y2'].tolist()
fig = plt.figure()
ax1 = plt.subplot2grid((1,1), (0,0))
ax1.plot(x, y1, label='y1')
ax1.plot(x, y2, label='y2')
plt.show()
基本上我画了两条线:
ax1.plot(x, y1, label='y1')
ax1.plot(x, y2, label='y2')
假设图表是实时的并且正在更新。我希望 python 在行相遇时打印一条警告消息,另一个条件是它只会打印一条警告消息 100 次。
这是我目前得到的结果:
我定义了 warning_message 函数来打印警告消息。
def warning_message():
print("Warning!")
我也做了另一个条件,它只会打印 100 次警告消息。
count = 100
while count != '0':
warning_message()
count -= 1
这个 while 循环中缺少的条件是它只会在行相遇时打印警告消息。
有谁知道怎么做? :D
由于线条共享相同的 x 数据,比较它们的 y 数据相当容易。
简单地问 y2 > y1
是否足够。
import numpy as np
y1 = np.array([1,2,3])
y2 = np.array([0,1,3.1])
if np.any(y2>y1):
print("warning")
为了在您的脚本中实现此功能,请不要使用 .tolist()
,而是将数据保留为 numpy 数组,即 y1 = df['y1'].values
.
似乎需要更多指导。因此,要检查所有可能的情况,y2 来自 y1 之上,或来自 y1 以下,您可以执行以下操作:
import numpy as np
y1 = np.array([1,2,3])
y2 = np.array([0,1,2.9])+1
c = y2>y1
if (np.any(c) and not np.all(c)) or (np.any(~c) and not np.all(~c)):
print("warning")
if np.all(c) or np.all(~c):
#reset counter here
pass
这是我的代码:
import matplotlib.pyplot as plt
import pandas as pd
import urllib
API = 'http://api.example.com'
data = urllib.request.urlopen(API)
df = pd.DataFrame(data)
x = df['x'].tolist()
y1 = df['y1'].tolist()
y2 = df['y2'].tolist()
fig = plt.figure()
ax1 = plt.subplot2grid((1,1), (0,0))
ax1.plot(x, y1, label='y1')
ax1.plot(x, y2, label='y2')
plt.show()
基本上我画了两条线:
ax1.plot(x, y1, label='y1')
ax1.plot(x, y2, label='y2')
假设图表是实时的并且正在更新。我希望 python 在行相遇时打印一条警告消息,另一个条件是它只会打印一条警告消息 100 次。
这是我目前得到的结果:
我定义了 warning_message 函数来打印警告消息。
def warning_message():
print("Warning!")
我也做了另一个条件,它只会打印 100 次警告消息。
count = 100
while count != '0':
warning_message()
count -= 1
这个 while 循环中缺少的条件是它只会在行相遇时打印警告消息。 有谁知道怎么做? :D
由于线条共享相同的 x 数据,比较它们的 y 数据相当容易。
简单地问 y2 > y1
是否足够。
import numpy as np
y1 = np.array([1,2,3])
y2 = np.array([0,1,3.1])
if np.any(y2>y1):
print("warning")
为了在您的脚本中实现此功能,请不要使用 .tolist()
,而是将数据保留为 numpy 数组,即 y1 = df['y1'].values
.
似乎需要更多指导。因此,要检查所有可能的情况,y2 来自 y1 之上,或来自 y1 以下,您可以执行以下操作:
import numpy as np
y1 = np.array([1,2,3])
y2 = np.array([0,1,2.9])+1
c = y2>y1
if (np.any(c) and not np.all(c)) or (np.any(~c) and not np.all(~c)):
print("warning")
if np.all(c) or np.all(~c):
#reset counter here
pass