我试图用 plotly 绘制两个散点图,其中在两个子图中自动选择的颜色是相同的,但我找不到这样做的方法。
下面是一个代码片段:
import plotly as py
import plotly.tools as to
import numpy as np
import plotly.graph_objs as go
fig=to.make_subplots(rows=1,cols=2,subplot_titles=['Plot 1','Plot 2'])
X=[0,50,100,150,200,250,300,350,400,450,500]
Y=[1,2,3,4,5,6,7,8,9,10,11]
Z=Y.copy()
for i in np.arange(11):
if i==0:
Z[0]=Y[0]
else:
Z[i]=Y[i]+Z[i-1]
trace=go.Scatter(x=X,y=Y)
fig.append_trace(trace,1,1)
trace=go.Scatter(x=X,y=Z,showlegend=False)
fig.append_trace(trace,1,2);
py.offline.plot(fig)
Run Code Online (Sandbox Code Playgroud)
上面的代码绘制了两个子图,散点将具有不同的颜色。我希望它们具有相同的颜色。我知道我可以对两个散点上的颜色进行硬编码,但我需要从某些配色方案中自动选择颜色。
我怎样才能达到我所需要的?
仅使用plot.ly 中的这几行代码将在 jupyter notebook 中为您提供以下图:
片段 1:
import plotly
import cufflinks as cf
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
init_notebook_mode(connected=True)
iplot(cf.datagen.lines().iplot(asFigure=True,
kind='scatter',xTitle='Dates',yTitle='Returns',title='Returns'))
Run Code Online (Sandbox Code Playgroud)
情节 1:
您如何设置它以便您可以在下面的图中使用交替的背景颜色,就像这篇文章中使用matplotlib显示的那样?
片段 2:
df.iplot(vspan={'x0':'2015-02-15','x1':'2015-03-15','color':'rgba(30,30,30,0.3)','fill':True,'opacity':.4},
filename='cufflinks/custom-regions')
Run Code Online (Sandbox Code Playgroud)
情节 2:
感谢您的任何建议!
我想反转我使用 plotly.graph_objects 为所有过图获得的图形的 y 轴。我知道可以使用 plotly.express 完成轴的反转。但我想知道如何使用plotly.graph_objects以下方法反转轴:

我有以下代码:
from plotly.subplots import make_subplots
import requests
import json
import datetime as dt
import pandas as pd
import plotly.graph_objects as go
def get_candles(symbol, window, interval='1h'):
url = "https://api.binance.com/api/v1/klines"
end_time = dt.datetime.utcnow()
delta = dt.timedelta(hours = window)
start_time = end_time - delta
start_date = str(int(start_time.timestamp() * 1000))
end_date = str(int(end_time.timestamp() * 1000))
limit = '1000'
market = symbol + 'BUSD'
req_param = {"symbol": market, "interval": interval, "startTime": start_date, "endTime": end_date, "limit": limit}
text = requests.get(url, params = req_param).text
data = json.loads(text) …Run Code Online (Sandbox Code Playgroud) 我想为Python中的绘图创建一个具有n种颜色的颜色图,它应该从一种颜色淡入另一种颜色。所有默认颜色图只有 10 个离散值,但我正在寻找具有 n > 10 个离散值的颜色图。
>>> px.colors.sequential.Plasma_r
['#f0f921',
'#fdca26',
'#fb9f3a',
'#ed7953',
'#d8576b',
'#bd3786',
'#9c179e',
'#7201a8',
'#46039f',
'#0d0887']
Run Code Online (Sandbox Code Playgroud)
有没有办法将连续的地图分成n部分?
如何从数据帧的两列绘制两条线图,并且另一列表示 x 轴,另外两列表示前两列的悬停值(工具提示)?
我正在尝试为我的每个跟踪绘制一个选定的标记。我想为标记和线条分配相同的颜色。有没有办法获得我的痕迹的颜色属性?
fig = go.Figure()
fig.add_trace(go.Scatter(
x=[0, 1, 2, 3, 4, 5],
y=[0, 3, 5, 7, 9, 11],
name='trace01',
mode='lines+markers',
marker=dict(size=[0, 0, 30, 0, 0, 0],
color=[0, 0, 10, 0, 0, 0])
))
fig.add_trace(go.Scatter(
x=[0, 1, 2, 3, 4, 5],
y=[3, 5, 7, 9, 11, 13],
name='trace02',
mode='lines+markers',
marker=dict(size=[0, 0, 0, 30, 0, 0],
color=[0, 0, 0, 10, 0, 0])
))
fig.show()
Run Code Online (Sandbox Code Playgroud)
https://plotly.com/python/line-and-scatter/有许多散点图示例,但没有一个向您展示如何在 px.scatter 中设置所有点的颜色:
# x and y given as DataFrame columns
import plotly.express as px
df = px.data.iris() # iris is a pandas DataFrame
fig = px.scatter(df, x="sepal_width", y="sepal_length")
fig.show()
Run Code Online (Sandbox Code Playgroud)
我试过添加colour = 'red'等不起作用。这些示例仅向您展示如何通过其他变量着色。
原则上我可以添加另一个功能并将其设置为相同,但这似乎是完成任务的一种奇怪的方式......
我想仅在单击按钮后才使用 plotly 显示图形,但我不确定如何进行此操作。我的图存储在以下代码位中
fig1 = go.Figure(data=plot_data, layout=plot_layout)
Run Code Online (Sandbox Code Playgroud)
然后我使用以下代码位定义我的应用程序布局:
app.layout = html.Div([
#button
html.Div(className='submit', children=[
html.Button('Forecast', id='submit', n_clicks=0)
]),
#loading
dcc.Loading(
id="loading-1",
type="default",
children=html.Div(id="loading-output-1")
),
#graph
dcc.Graph(id= 'mpg-scatter',figure=fig),
#hoverdata
html.Div([
dcc.Markdown(id='hoverdata-text')
],style={'width':'50%','display':'inline-block'})
])
@app.callback(Output('hoverdata-text','children'),
[Input('mpg-scatter','hoverData')])
def callback_stats(hoverData):
return str(hoverData)
if __name__ == '__main__':
app.run_server()
Run Code Online (Sandbox Code Playgroud)
但问题是我只想首先显示按钮。然后当有人点击预测按钮时,加载功能出现,一秒钟后图表显示。我定义了一个 dcc.loading 组件,但不确定如何定义此功能的回调。
使用pd.date_rangedr = pd.date_range('2020', freq='15min', periods=n_obs)会产生间隔或频率为 15 分钟的 DateTimeIndex :
DatetimeIndex(['2020-01-01 00:00:00', '2020-01-01 00:15:00',
'2020-01-01 00:30:00', '2020-01-01 00:45:00',
'2020-01-01 01:00:00'],
dtype='datetime64[ns]', freq='15T')
Run Code Online (Sandbox Code Playgroud)
您可以使用它来设置 pandas 数据框,例如:
import pandas as pd
import numpy as np
# data
np.random.seed(10)
n_obs = 10
daterange = pd.date_range('2020', freq='15min', periods=n_obs)
values = np.random.uniform(low=-1, high=1, size=n_obs).tolist()
df = pd.DataFrame({'time':daterange, 'value':values})
df = df.set_index('time')
Run Code Online (Sandbox Code Playgroud)
现在您可以再次pd.infer_freq(df.index)检索频率'15T'以进行进一步计算。仔细观察help(pd.infer_freq())让我们知道pd.infer_freq将:
Run Code Online (Sandbox Code Playgroud)Infer the most likely frequency given the input index. If the frequency is …