查看季節性數據時,我喜歡使用一次顯示幾年數據的圖表,以1月至12月的月份x軸和y軸上的值,使用顏色來區分年份。下面的圖表使用ggplot2
在R
中創建。如何在Plotly中使用Python API複製它或生成非常相似的東西?如何繪製圖表,將年份映射爲x軸上的線條顏色和月份
到目前爲止, 「最好的」 我這樣做是這樣的:
...這顯然不會做的工作。理想情況下,我希望能夠給出Plotly五年的數據(基本上是年份提供的類別)與一兩個或三個或五個顏色的數組,並讓它自動映射每年的顏色,而不必手動指定單個顏色本身。基本上我不明白Plotly的顏色映射機制到了那裏。
代號爲Python的例子:
import plotly.plotly as py
import plotly.graph_objs as go
import pandas as pd
import numpy as np
py.sign_in('xxx','xxx')
np.random.seed(123456)
num_periods=24
monthindex=pd.date_range('1/1/2014', periods=num_periods, freq='MS')
dd = pd.DataFrame(data={'date':monthindex,
'c1': np.random.uniform(10, 20, size=num_periods),
'c2': np.random.uniform(30, 40, size=num_periods)},
index=monthindex,
)
dd['year'] = dd['date'].dt.year
dd['monthname'] = dd['date'].dt.strftime('%b')
outdata = [
go.Scatter(
x=dd['monthname'], # assign x as the dataframe column 'x'
y=dd['c1'],
)
]
layout = go.Layout(
showlegend=True,
title="'Stacking' years in plotly",
xaxis=dict(
type='category'
)
)
代碼的R例如:
library(ggplot2)
dd <- data.frame(date = seq(as.Date("2014/1/1"),
by = "month",
length.out = 24),
c1 = runif(24, min = 10, max = 20))
dd$month <- as.integer(strftime(dd$date, "%m"))
dd$year <- strftime(dd$date, "%Y")
xscale <- data.frame(breaks = c(1,2,3,4,5,6,7,8,9,10,11,12),
labels = c('Jan','Feb','Mar','Apr',
'May','Jun','Jul','Aug','Sep',
'Oct','Nov','Dec'))
ggplot(dd, aes(month, c1)) +
geom_line(aes(colour = factor(year))) +
scale_x_continuous(breaks = xscale$breaks,
labels = xscale$labels) +
scale_colour_manual("year",values=c("Red","Blue")) +
ggtitle("'Stacking' years in ggplot2")
謝謝你讓我意識到這一點。我對這個庫很陌生,所以我很難判斷你的代碼是否實際上使用'plotly'或者它是否使用另一個繪圖庫;是'plotly'的'iplot'部分? – SlowLearner
是的,它使用'plotly'庫。第一個例子僅依賴於「plotly」進行繪圖,而第二個例子使用「cufflinks」模塊將「pandas」和「plotly」神奇地綁在一起。 – elsherbini
你可以在第一個例子中用'plot'替換'iplot'。 'iplot'用於在ipython筆記本上內聯繪圖。 – elsherbini