【问题标题】:Create a conditional plot python [closed]创建一个条件图python [关闭]
【发布时间】:2017-08-28 17:48:21
【问题描述】:

我只想绘制小于或等于某个数字(比如说 15)的值。 我可以在我的数据框的一列中找到这些值,如果这些值不小于或等于 15,我不想绘制它们。

你能帮我找到解决办法吗?

【问题讨论】:

  • 到目前为止你尝试过什么?如果您能找到这些值,您可以列出它们并绘制该列表。在这种情况下,您还可以更改 limits of the axes 以“隐藏”您不需要的值。
  • 虽然质量真的很差(@Leonardo 请阅读How to Ask),但我认为这个问题很清楚,可以回答。

标签: python matplotlib


【解决方案1】:

0。制作一个最小的例子
(此步骤通常应由提出问题的人执行;这也是您的问题经常被否决的原因之一)

import numpy as np; np.random.seed(4)
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams["figure.figsize"] = 5,3

x = np.linspace(2.1,6.3,num=70)
y = np.cumsum(np.random.normal(size=len(x))*10.)
df = pd.DataFrame({"x":x, "y":y})

plt.plot(df.x,df.y)

plt.show()

现在你有几个选择:

1.限制视图

您可以简单地限制绘图的视图,使其 y 比例仅上升到 15。这是通过

plt.ylim(-30,15)

2。过滤数据框

您可以按条件过滤数据框。这意味着在生成的数据框中,仅存在条件为肉的那些行。

df2 = df[df.y <= 15]

plt.plot(df.x,df.y, label="original")
plt.plot(df2.x,df2.y, label="filtered to y <= 15")

可以看出,15 以上的值不在过滤曲线中。但是,新曲线看起来也是连续的,这可能会令人困惑,具体取决于所需的图形。

3.将所有大于 15 的值设置为 nan

不绘制数据集中的值nan(不是数字)。这可以通过将所有高于 15 的值设置为 nan 来使用。

df2 = df.copy()
df2[df2.y > 15] = np.nan

plt.plot(df2.x,df2.y, label="y > 15 set to nan")

附录:使用两种不同的条件
您可以通过将它们与 &amp; ("and") 或 | ("or") 等逻辑运算符组合使用多个条件。 因此,将所有高于 15 或低于 -15 的值设置为 nan,您会这样做

df2[(df2.y > 15) | (df2.y < -15)] = np.nan

【讨论】:

  • 我要谢谢你,你的回答对我帮助很大。
  • 我还有一个问题要做。我正在使用这个: x = a['Roll'] x2 = x[x = 15,我该怎么做?
  • 我更新了答案。
  • 如果我使用您教我的第三种方式,它会起作用,但我使用的是第二种方式。我试图将此应用于第二种方式,但没有奏效。想象一列数据,我想将绘制该列的所有数据与仅绘制此条件下的数据的条件图进行比较 >>> -15 = 15 在同一图形中的同一列。
  • 组合条件适用于两种方法!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-05
  • 2014-01-16
  • 2021-12-05
  • 2014-05-02
  • 2021-02-21
  • 2012-08-28
  • 1970-01-01
相关资源
最近更新 更多