>

다음 코드로

from bokeh.plotting import figure, show, output_file
from bokeh.sampledata.iris import flowers
colormap = {'setosa': 'red', 'versicolor': 'green', 'virginica': 'blue'}
colors = [colormap[x] for x in flowers['species']]
p = figure(title = "Iris Morphology")
p.xaxis.axis_label = 'Petal Length'
p.yaxis.axis_label = 'Petal Width'
p.circle(flowers["petal_length"], flowers["petal_width"],
         color=colors, fill_alpha=0.2, size=10)
output_file("iris.html", title="iris.py example")
show(p)

종을 색칠하는 원 플롯을 만들 수 있습니다 :

그러나 내가하고 싶은 것은의 범위를 기준으로 모든 점을 채색하는 것입니다. petal_length 의 가치 .

이 코드를 시도했지만 실패했습니다 :

from bokeh.models import LinearColorMapper
exp_cmap = LinearColorMapper(palette='Viridis256', low = min(flowers["petal_length"]), high = max(flowers["petal_length"]))
p.circle(flowers["petal_length"], flowers["petal_width"], 
         fill_color = {'field'  : flowers["petal_lengh"], 'transform' : exp_cmap})
output_file("iris.html", title="iris.py example")
show(p)

또한 원하는 최종 플롯에서 컬러 바를 어떻게 넣을 수 있습니까? 값의 범위와 할당 된 값을 보여줍니다. 다음과 같은 것 :

Python 2.7.13 를 사용하고 있습니다 .


  • 답변 # 1

    첫 번째 부분에 답하기 위해 작은 오타가있었습니다 ( petal_lengh   petal_length 대신 더 중요하게는 bokeh.ColumnDataSource 를 사용하여  당신의 문제를 해결할 것입니다 (나는 CDS 없이 그것을하려고했습니다.  열 오류 만 발생) :

    from bokeh.plotting import figure, show, output_file
    from bokeh.sampledata.iris import flowers  
    from bokeh.models import LinearColorMapper
    from bokeh.models import ColumnDataSource
    p = figure(title = "Iris Morphology")
    p.xaxis.axis_label = "Petal Length"
    p.yaxis.axis_label = "Petal Width"
    source = ColumnDataSource(flowers)
    exp_cmap = LinearColorMapper(palette="Viridis256", 
                                 low = min(flowers["petal_length"]), 
                                 high = max(flowers["petal_length"]))
    p.circle("petal_length", "petal_width", source=source, line_color=None,
            fill_color={"field":"petal_length", "transform":exp_cmap})
    # ANSWER SECOND PART - COLORBAR
    # To display a color bar you'll need to import 
    # the `bokeh.models.ColorBar` class and pass it your mapper.
    from bokeh.models import ColorBar
    bar = ColorBar(color_mapper=exp_cmap, location=(0,0))
    p.add_layout(bar, "left")
    show(p)
    
    

    참조 : https://github.com/bokeh/bokeh/blob/master/examples/plotting/file/color_data_map.py

  • 답변 # 2

    컬러 매퍼 변환은열 이름을 나타냅니다.실제 리터럴 데이터 목록을 허용하지 않습니다. 따라서 모든 데이터는 Bokeh ColumDataSource 에 있어야합니다.  플로팅 기능은 모두 열 이름을 참조해야합니다. 다행히도 이것은 간단합니다 :

    p.circle("petal_length", "petal_width", source=flowers, size=20,
             fill_color = {'field': 'petal_length', 'transform': exp_cmap})
    
    

    플롯 영역 외부의 범례에 대한 지침은 다음과 같습니다.

    https://bokeh.pydata.org/en/latest/docs/user_guide/styling.html#outside-the-plot-area

관련 자료

  • 이전 cordova - 이온 프레임 워크에서 Firebase Cloud Messaging Plugin 사용 단계
  • 다음 java - 연결될 때까지 소켓을 통해 서버에 지속적으로 연결