Python 基于变量值的自定义绘图标记
我使用下面的代码在Python中创建了一个简单的绘图折线图。我有两个变量(在代码的底部): ctime仅使用金额中每个元素的当前时间;有10次 金额为0-1000之间的一组金额;这是十个数量 我想按以下方式为打印标记上色: 金额不足300元;该值的特定标记将为绿色 金额在300至400之间;该值的特定标记将为黄色 金额大于400;该值的特定标记将为红色 有什么方法可以为它构建一个条件类型处理程序吗Python 基于变量值的自定义绘图标记,python,plotly,Python,Plotly,我使用下面的代码在Python中创建了一个简单的绘图折线图。我有两个变量(在代码的底部): ctime仅使用金额中每个元素的当前时间;有10次 金额为0-1000之间的一组金额;这是十个数量 我想按以下方式为打印标记上色: 金额不足300元;该值的特定标记将为绿色 金额在300至400之间;该值的特定标记将为黄色 金额大于400;该值的特定标记将为红色 有什么方法可以为它构建一个条件类型处理程序吗 layout = Layout( title='Current Amount',
layout = Layout(
title='Current Amount',
titlefont=Font(
family='"Open sans", verdana, arial, sans-serif',
size=17,
color='#444'
),
font=Font(
family='"Open sans", verdana, arial, sans-serif',
size=12,
color='#444'
),
showlegend=True,
autosize=True,
width=803,
height=566,
xaxis=XAxis(
title='Time',
titlefont=Font(
family='"Open sans", verdana, arial, sans-serif',
size=14,
color='#444'
),
range=[1418632334984.89, 1418632334986.89],
domain=[0, 1],
type='date',
rangemode='normal',
autorange=True,
showgrid=False,
zeroline=False,
showline=True,
autotick=True,
nticks=0,
ticks='inside',
showticklabels=True,
tick0=0,
dtick=1,
ticklen=5,
tickwidth=1,
tickcolor='#444',
tickangle='auto',
tickfont=Font(
family='"Open sans", verdana, arial, sans-serif',
size=12,
color='#444'
),
mirror='allticks',
linecolor='rgb(34,34,34)',
linewidth=1,
anchor='y',
side='bottom'
),
yaxis=YAxis(
title='GHI (W/m2)',
titlefont=Font(
family='"Open sans", verdana, arial, sans-serif',
size=14,
color='#444'
),
range=[-5.968375815056313, 57.068375815056314],
domain=[0, 1],
type='linear',
rangemode='normal',
autorange=True,
showgrid=False,
zeroline=False,
showline=True,
autotick=True,
nticks=0,
ticks='inside',
showticklabels=True,
tick0=0,
dtick=1,
ticklen=5,
tickwidth=1,
tickcolor='#444',
tickangle='auto',
tickfont=Font(
family='"Open sans", verdana, arial, sans-serif',
size=12,
color='#444'
),
exponentformat='B',
showexponent='all',
mirror='allticks',
linecolor='rgb(34,34,34)',
linewidth=1,
anchor='x',
side='left'
),
legend=Legend(
x=1,
y=1.02,
traceorder='normal',
font=Font(
family='"Open sans", verdana, arial, sans-serif',
size=12,
color='#444'
),
bgcolor='rgba(255, 255, 255, 0.5)',
bordercolor='#444',
borderwidth=0,
xanchor='left',
yanchor='auto'
)
)
new_data = Scatter(x=ctime, y=amount)
data = Data( [ new_data ] )
因此,对于您的用例,您需要使用折线图下的属性
marker.color
,该属性在正式文档中给出
颜色(颜色)设置标记颜色。它接受特定的颜色或映射到 相对于数组的最大值和最小值或相对 到
cmin
和cmax
(如果设置)
阅读更多
下面是一个简单的工作示例,演示您的用例,请将其应用到您的解决方案中,并让我知道您的问题是否得到解决
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import plotly.graph_objs as go
from plotly.offline import download_plotlyjs,init_notebook_mode,plot,iplot
init_notebook_mode(connected=True)
x = [1,2,3,4,5,6,7,8,9]
y = [100,200,300,400,500,600,700,800,900]
# function below sets the color based on amount
def SetColor(x):
if(x < 300):
return "green"
elif(x >= 300 | x <= 400):
return "yellow"
elif(x > 400):
return "red"
# Create a trace
trace = go.Scatter(
x = x,
y = y,
marker = dict(color=list(map(SetColor, y)))
)
iplot([trace], filename='basic-line')
导入matplotlib.pyplot作为plt
作为pd进口熊猫
将numpy作为np导入
导入plotly.graph_objs作为go
从plotly.offline导入下载\u plotlyjs,初始化\u笔记本\u模式,绘图,iplot
初始笔记本模式(已连接=真)
x=[1,2,3,4,5,6,7,8,9]
y=[100200300400500600700800900]
#下面的函数根据数量设置颜色
def SetColor(x):
如果(x<300):
返回“绿色”
elif(x>=300 | x 400):
返回“红色”
#创建跟踪
trace=go.Scatter(
x=x,
y=y,
marker=dict(color=list(map(SetColor,y)))
)
iplot([trace],filename='basic-line')
输出:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import plotly.graph_objs as go
from plotly.offline import download_plotlyjs,init_notebook_mode,plot,iplot
init_notebook_mode(connected=True)
x = [1,2,3,4,5,6,7,8,9]
y = [100,200,300,400,500,600,700,800,900]
# function below sets the color based on amount
def SetColor(x):
if(x < 300):
return "green"
elif(x >= 300 | x <= 400):
return "yellow"
elif(x > 400):
return "red"
# Create a trace
trace = go.Scatter(
x = x,
y = y,
marker = dict(color=list(map(SetColor, y)))
)
iplot([trace], filename='basic-line')