2017-11-18 2 views
1

저는 산산이 그래프를 채색하는 것에 대해 음모를 꾸미고 있습니다 (documentation). 여기 내 코드입니다 :범례에 파이썬의 플롯을 사용하여 데이터 포인트에 해당하는 색상을 지정하는 방법은 무엇입니까?

scatters = [] 
for label, df in data.groupby(level=[0, 1]): 
    scales = cl.scales[str(df.shape[0])] 
    colour = scales['qual']['Paired'] 
    d = go.Scatter(
     x=df[0], 
     y=df[1], 
     mode='markers', 
     name=reduce(lambda x, y: '{}_{}'.format(x, y), label), 
     marker=go.Marker(color=colour, line=go.Line(color='black')), 
    ) 
    scatters.append(d) 
:

내가 먼저 내 내가 plotly와 분산 형 그래프를 만들려면 내가 지금

import pandas 
import colorlover as cl 
import plotly 
import plotly.graph_objs as go 
import numpy 
data = numpy.random.normal(0, 1, 3*6*11*2) 
data = data.reshape(((3*6*11), 2)) 
data = pandas.DataFrame(data) 
sub_experiments = ['Subexperiment_{}'.format(i) for i in [1, 2, 3]] 
repeats = ['Repeat_{}'.format(i) for i in range(1, 7)] 
time = ['{}h'.format(i) for i in range(11)] 

array = [sub_experiments, repeats, time] 
idx = pandas.MultiIndex.from_product(array, names=['SubExperiment', 'Repeats', 'Time']) 
data.index = idx 

함께 일하고 있어요 같은 모양의 가짜 데이터 프레임을 생성

그리고는 다음과 같습니다

enter image description here

주 이 예제에 대한 데이터를 작성하고 실제로 주 구성 요소 분석을 수행하고 있으므로 위의 스크린 샷의 플롯은 클러스터를 보여 주지만 예제 코드는 그렇지 않습니다.

여기서 문제는 plotly이 점과 같이 범례를 색칠하지 않았다는 것입니다.

포인트와 같은 방법으로 범례의 색상을 지정하려면 어떻게해야합니까?

답변

0

각 추적마다 색상이있는 배열을 전달합니다. 즉, 각 추적에는 여러 가지 색상이 있습니다. 범례에서 하나를 선택하는 것은 실제로 이해가되지 않습니다 (효과를 보려면 color=colour을 제거하십시오).

코드를 기반으로 볼 때 예상되는 내용, 즉 라벨에 기반해야하는지, 즉 하위 실험 + 반복 또는 시간 (코드에 정의 된대로)을 기반으로해야하는지 확신 할 수 없습니다.

첫 번째 경우에는 각 추적마다 하나의 색상을 선택할 수 있습니다. 후자의 경우, 시간을 플로팅하고 매번 한 색상을 할당하는 것이 제 의견으로는 더 합리적입니다.

+0

예, 이것이 제 문제였습니다. 나는'color = colour'로 내가 무엇을하고 있었는지를 잘 이해하지 못했다. 이제 코드를 수정할 수있게되었습니다. 감사 – CiaranWelsh

관련 문제