gpt4 book ai didi

python - 散点图标记的条件格式

转载 作者:行者123 更新时间:2023-12-05 00:58:53 24 4
gpt4 key购买 nike

问题:
我有一个包含 xy 值对的数据集,以及 y 的 lower_limitupper_limit.

我想在 plot.ly 散点图中绘制 xy,如果 lower_limit标记为绿色> ≤ yupper_limit,否则为红色

我知道我可以使用 2 个跟踪,或者在 DataFrame 中添加一个 color 列。但是,我想动态生成这些颜色并只使用一条轨迹。

示例:
考虑这个数据集:

   x   y  lower_limit  upper_limit
0 1 13 10 15
1 2 13 15 20
2 3 17 15 20

第一个标记 (x=1, y=13) 应该是绿色的,因为 lower_limityupper_limit (10 ≤ 13 ≤ 15),和第三个一样。
但是第二个应该是红色的,因为 y <lower_limit.

然后我想生成这个图表: enter image description here


MWE:

import pandas as pd
import plotly.graph_objs as go
import plotly.plotly as py
import plotly.offline as po

data = [
[1, 13, 10, 15],
[2, 13, 15, 20],
[3, 17, 15, 20]
]

df = pd.DataFrame(
data,
columns=['x', 'y', 'lower_limit', 'upper_limit']
)

trace = go.Scatter(
x=df['x'],
y=df['y'],
mode='markers',
marker=dict(
size=42,
# I want the color to be green if
# lower_limit ≤ y ≤ upper_limit
# else red
color='green',
)
)

po.plot([trace])

最佳答案

我建议创建一个新数组来存储颜色值,请在下面找到使用 np.wherenp.logical_and 来形成条件的示例比较。

import plotly.offline as py
import plotly.graph_objs as go
from plotly.offline import init_notebook_mode, iplot, plot
from plotly import tools
import pandas as pd
import numpy
init_notebook_mode(connected=True)
data = [
[1, 13, 10, 15],
[2, 13, 15, 20],
[3, 17, 15, 20]
]

df = pd.DataFrame(
data,
columns=['x', 'y', 'lower_limit', 'upper_limit']
)

#df['color'] = np.where(np.logical_and(df['lower_limit'] >= df['y'], df['y'] <= df['upper_limit']), 'green', 'red')

trace = go.Scatter(
x=df['x'],
y=df['y'],
mode='markers',
marker=dict(
size=42,
# I want the color to be green if lower_limit ≤ y ≤ upper_limit
# else red
color=np.where(np.logical_and(df['lower_limit'] <= df['y'], df['y'] <= df['upper_limit']), 'green', 'red'),
)
)

iplot([trace])

引用资料:

  1. Pandas: np.where with multiple conditions on dataframes

  2. Pandas: Ternary conditional operator for setting a value in a DataFrame

关于python - 散点图标记的条件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55926512/

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