繁体   English   中英

在python中使用if-else条件语句绘图

[英]Plotting with if-else conditional statements in python

我正在尝试将 go.scatter 与我的条件语句一起使用。

A 和 df['T_orNonT'] 是我的数据框 df 中的列。 如果“A”上的一行小于或等于 200,则 df['T_orNonT'] 列将显示 'Non-T',否则为 'T'

我想使用 go.scatter 绘制它们,其中 'T' 或 'Non-T' 显示为不同的颜色。 这是我的代码:

import plotly.graph_objects as go
fig = go.Figure()
for i in range (0, length):
    if A[i] <=  200:
        df['T_or_NonT'].iloc[i] = 'Non-T'
        fig = go.Figure()
        fig.add_trace(go.Scatter(
             x = df['Date'],
             y = df['A'],
             mode ='markers',
             name='Non-T',
             marker=dict(color ='red')))
        fig.show()


    else:
        df['T_or_NonT'].iloc[i] = 'T'
        fig = go.Figure()
        fig.add_trace(go.Scatter(
             x = df['Date'],
             y = df['A'],
             mode ='markers',
             name='T',
             marker=dict(color ='green')))
        fig.show()

这应该是输出:

  Date        A       T or Non-T
   07/21      201      T
   08/21      255      T
   09/21      198     Non-T

然后他们将绘制日期(每月)与降雨量(即 A 列)。 T 标记为红色,非 T 标记为绿色。

但我不能让它工作。 我想知道编码这个的正确方法。 顺便说一下,我是一个 python 初学者用户。

附注。 您还可以建议是否有其他解决方法

有很多方法可以做到这一点,但我认为最简单的方法是为决策结果设置一列颜色。 最简单的方法是在判断结果列上一个颜色列,然后用该数据框的判断条件项提取的数据绘制散点图。

import pandas as pd
import numpy as np
import plotly.graph_objects as go

df = pd.DataFrame({'Date': pd.date_range('2018-01-21','2021-01-21',freq='1m'),
                  'A': np.random.randint(150,250, 36)})

df['T_or_NonT'] = np.where(df['A'] >= 200,'T','Non-T')
df['color'] = np.where(df['A'] >= 200,'red','green')

fig = go.Figure()

for t,c in zip(df['T_or_NonT'].unique(), df['color'].unique()):
    dfs = df[df['T_or_NonT'] == t]
    fig.add_trace(go.Scatter(
        x = dfs['Date'],
        y = dfs['A'],
        mode = 'markers',
        name = t,
        marker = dict(
            color = c
        )
    ))
    
fig.show()

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM