如何用非数字列制作散点图?

时间:2019-08-13 15:34:17

标签: python bokeh scatter-plot

如果我想在matplotlib中绘制散点图,我可以这样做:

import pandas as pd

from bokeh.io import show
from bokeh.plotting import figure
from bokeh.models import ColumnDataSource

import matplotlib.pyplot as plt


df = pd.DataFrame({'a': range(1, 6), 'b': list('ABCDE')})

plt.scatter(df['a'], df['b'])
plt.show()

哪个给

enter image description here

我如何在bokeh中获得相同的输出?

我尝试过(与上述设置相同):

source = ColumnDataSource(df)    

p = figure(
    title="Something great",
    tools='save,pan,box_zoom,reset,wheel_zoom',
    background_fill_color="#fafafa"
)

p.scatter(
    'a',
    'b',
    source=source
)

show(p)

但是不会显示任何内容。如果我将a列与其自身相对应,则可以正常工作,这表明代码结构很好,但仅适用于数值。有快速解决方法吗?

1 个答案:

答案 0 :(得分:2)

y_range参数为我解决了该问题。

我在Handling Categorical Data找到了它。

p = figure(
    y_range=df['b'], # < -- what I added 
    title="Something great",
    tools='save,pan,box_zoom,reset,wheel_zoom',
    background_fill_color="#fafafa"
)

enter image description here