Plotly 如何在x轴上将年映射为线颜色并将月映射为绘图图表
在查看季节性数据时,我喜欢使用一次显示几年数据的图表,x轴上显示从1月到12月的月份,y轴上显示数值,使用颜色区分年份。下图是使用ggplot2在R中创建的。如何使用Python API复制它或生成非常类似的东西 到目前为止,我做得最好的是: …这显然不起作用。理想情况下,我希望能够绘出五年的数据,基本上是年份,为类别提供两种、三种或五种颜色的数组,并使其每年自动映射到一种颜色,而无需手动指定单个颜色本身。基本上,我只是不太了解Plotly的颜色映射机制,所以无法达到目的 Python示例的代码:Plotly 如何在x轴上将年映射为线颜色并将月映射为绘图图表,plotly,Plotly,在查看季节性数据时,我喜欢使用一次显示几年数据的图表,x轴上显示从1月到12月的月份,y轴上显示数值,使用颜色区分年份。下图是使用ggplot2在R中创建的。如何使用Python API复制它或生成非常类似的东西 到目前为止,我做得最好的是: …这显然不起作用。理想情况下,我希望能够绘出五年的数据,基本上是年份,为类别提供两种、三种或五种颜色的数组,并使其每年自动映射到一种颜色,而无需手动指定单个颜色本身。基本上,我只是不太了解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")
我最近刚刚学习了在数据帧中将所有不同的跟踪绘制成列的模式:
dd = dd.pivot_table('c1', 'monthname', 'year')
py.iplot([{
'x': dd.index,
'y': dd[col],
'name': col
} for col in dd.columns])
上面的代码便于快速打印,但如果您想更改默认布局设置,可以使用下面更详细的版本进行更改。查看更多示例
import plotly.plotly as py
import plotly.graph_objs as go
my_data = [{
'x': dd.index,
'y': dd[col],
'name': col
} for col in dd.columns]
my_layout = {'title':'my graphtitle',
'xaxis':{'title':'x axis title'},
'yaxis':{'title':'y axis title')
}
fig = go.Figure(data=my_data, layout=my_layout)
py.iplot(fig, filename='scatter_plot')
或者,您可以使用袖扣库,该库为数据帧提供了一个简单的绘图挂钩:
import cufflinks
dd = dd.pivot_table('c1', 'monthname', 'year')
dd.iplot()
袖扣神奇地为熊猫数据帧和其他对象提供了.iplot方法。退房,谢谢你让我意识到这一点。我是这个库的新手,所以我很难确定您的代码是实际使用plotly还是使用其他plotting库;iplot是plotly的一部分吗?是的,它正在使用plotly库。第一个示例仅依赖plotly进行打印,而第二个示例使用袖扣模块将熊猫和plotly神奇地绑在一起。在第一个示例中,您可以使用plot替换iplot。iplot用于在ipython笔记本中内联绘图。我用真实数据对其进行了测试,效果非常好,非常感谢。这比我自己的解决方法简单得多。使用你在上图中给出的方法,我如何控制标题、轴格式等?我已经尝试过在py.iplot[{之后的不同位置插入不同的绘图格式命令,但还没有成功解决。