我们如何在Plotly的子图中制作多面网格?例如,我想在子图中绘制total_bill
与tip
五次。我累了要执行以下操作:
import plotly.plotly as py
import plotly.figure_factory as ff
from plotly import tools
subfigs = tools.make_subplots(rows= 5, cols=1)
import pandas as pd
tips = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/tips.csv')
for i in enumerate(tips.columns.tolist()):
fig = ff.create_facet_grid(
tips,
x='total_bill',
y='tip',
color_name='sex',
show_boxes=False,
marker={'size': 10, 'opacity': 1.0},
colormap={'Male': 'rgb(165, 242, 242)', 'Female': 'rgb(253, 174, 216)'}
)
subfigs.append_trace(fig, i+1, 1)
pyo.iplot(fig)
这不起作用,因为由图形工厂创建的多面网格不被视为轨迹。有办法吗? This的答案无济于事,因为在我看来cufflinks
不接受多面网格
答案 0 :(得分:1)
这里发生了很多事情。
python中的函数for i in range(tips.columns.size):
为您提供元组列表,如果您只想使用可以使用的索引进行迭代
for i, col in enumerate(tips.columns):
否则,您可以通过打包操作
Figures
图形工厂中的方法返回Traces
,其中的data
列表中包含create_facet_grid
。您可以按其索引访问subfig.append_trace(fig['data'][index_of_the_trace], n1, n2)
方法产生的跟踪之一:
tips = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/tips.csv')
current_column = 'sex'
subfigs = tools.make_subplots(
rows = tips[current_column].nunique(),
cols = 1
)
fig = ff.create_facet_grid(
tips,
x = 'total_bill',
y = 'tip',
facet_row = current_column,
color_name = 'sex',
show_boxes = False,
marker = {'size': 10, 'opacity': 1.0},
colormap = {
'Male': 'rgb(165, 242, 242)',
'Female': 'rgb(253, 174, 216)'
}
)
for i in range(tips[current_column].nunique()):
subfigs.append_trace(fig['data'][i], i+1, 1)
py.iplot(fig)
多面网格的想法是将数据集按类别列之一进行拆分,这是一个示例,该示例说明了如何通过某些选定的列将数据集的分区分配给不同的子图:
task apkDeployDebug(type: Exec) {
group = 'custom'
workingDir "$projectDir/scripts"
commandLine 'sh', 'apkdeploy', "$projectDir", rootProject.ext.versionName, rootProject.ext.customer, "alpha", rootProject.ext.deploymentPath, rootProject.ext.buildNumber
}
task cleanBuildPublishDebug(type: GradleBuild) {
group = 'custom'
tasks = ['clean', 'assembleDebug', 'apkDeployDebug']
}
希望有帮助。