Python 图表不见了-什么库可以做交互式彩色散点图?
我发现自己最常做的可视化之一是:我有x,y数据,按类别标记。我需要绘制一个散点图,根据标签自动着色点,并生成一个图例然后可视化应该是交互式的(可缩放,悬停在点上显示元数据等) 这是一个完美的例子,我正在寻找的东西-一些存在于现在不推荐的: 我知道我可以与seaborn进行非交互操作:Python 图表不见了-什么库可以做交互式彩色散点图?,python,plot,bokeh,scatter-plot,Python,Plot,Bokeh,Scatter Plot,我发现自己最常做的可视化之一是:我有x,y数据,按类别标记。我需要绘制一个散点图,根据标签自动着色点,并生成一个图例然后可视化应该是交互式的(可缩放,悬停在点上显示元数据等) 这是一个完美的例子,我正在寻找的东西-一些存在于现在不推荐的: 我知道我可以与seaborn进行非交互操作: fig = sns.lmplot(x="Length", y="Boot", hue="class", fit_reg=False, data=df) 我可以与bokeh交互绘图,但只能在低级别上进行,没有颜色
fig = sns.lmplot(x="Length", y="Boot", hue="class", fit_reg=False, data=df)
我可以与bokeh交互绘图,但只能在低级别上进行,没有颜色或图例:
p = Scatter(df, x="Length", y="Boot", plot_width=800, plot_height=600,
tooltips=TOOLTIPS, title="Cars")
我还知道存在各种解决方法,例如手动定义调色板。然而,对于曾经是简单的一行程序(现在仍然是,在R中)的东西来说,这是非常复杂的。替代品Holoview似乎不支持散点图中的着色:
因此,对于在一行程序中支持这种开箱即用的Python包,有没有什么建议,而不是在低级基础上手动编写此代码?该库是bokeh charts API的良好替代品。然而,由于API对于习惯命令式绘图API的人来说相当陌生,我们最近发布了一个名为的新库,该库试图非常紧密地镜像熊猫绘图API,同时提供bokeh提供的交互性以及HoloViews的一些更高级的功能(例如,自动刻面、小部件和datashader集成)。要从上面重新创建绘图,您可以执行以下操作:
import bokeh.sampledata.autompg as mpg
import hvplot.pandas
mpg.autompg.hvplot.scatter(
x='displ', y='hp', by='cyl',
fields={'hp': 'Horsepower', 'displ': 'Displacement'},
title='HP vs. DISPL (shaded by CYL)'
)
请注意,在下一版本中,您将能够使用更明确的xlabel
和ylabel
参数替换字段
参数。该库是bokeh图表API的一个很好的替代品。但是,由于习惯于命令式绘图API的人对该API非常陌生,我们最近发布了基于一个名为的新库,该库尝试非常紧密地镜像熊猫绘图API,同时提供bokeh提供的交互性以及HoloView的一些更高级功能(例如自动刻面、小部件和数据阴影集成)。要从上面重新创建绘图,您可以执行以下操作:
import bokeh.sampledata.autompg as mpg
import hvplot.pandas
mpg.autompg.hvplot.scatter(
x='displ', y='hp', by='cyl',
fields={'hp': 'Horsepower', 'displ': 'Displacement'},
title='HP vs. DISPL (shaded by CYL)'
)
请注意,在下一个版本中,您将能够用更明确的
xlabel
和ylabel
参数替换字段
参数。在现代版本的Bokeh中,实现这一点非常简单:
from bokeh.plotting import figure, show
from bokeh.sampledata.iris import flowers as df
from bokeh.transform import factor_cmap
SPECIES = ['setosa', 'versicolor', 'virginica']
p = figure(tooltips="species: @species")
p.scatter("petal_length", "sepal_width", source=df, legend="species", alpha=0.5,
size=12, color=factor_cmap('species', 'Category10_3', SPECIES))
show(p)
在现代版本的Bokeh中实现这一点非常简单:
from bokeh.plotting import figure, show
from bokeh.sampledata.iris import flowers as df
from bokeh.transform import factor_cmap
SPECIES = ['setosa', 'versicolor', 'virginica']
p = figure(tooltips="species: @species")
p.scatter("petal_length", "sepal_width", source=df, legend="species", alpha=0.5,
size=12, color=factor_cmap('species', 'Category10_3', SPECIES))
show(p)
非常确定broke.charts刚刚被移动到了推荐@FHTMitchell:True的位置,但holoviews没有我需要的功能…我现在没有时间写完整的答案,但您可能对plotly的python api感兴趣。我希望旧文档能够清楚地表明这是不推荐的…花时间学习g bokeh了解到它不再有这个主要功能了…非常确定broke.charts刚刚被移动到了推荐@FHTMitchell:True的位置,但是holoviews没有我需要的功能…我现在没有时间写出完整的答案,但是你可能对plotly的python api感兴趣。我希望旧文档能够很明显,这是不推荐的…花时间学习bokeh以了解它不再具有此主要功能…这看起来正是我所寻找的!但是,它似乎与Spyder不起作用:我得到
Out[142]::NdOverlay[cyl]:散射[Displacement](马力)
而不是图像。。。(Windows/Python 3.6)是的,它主要设置为在笔记本中工作。但是您应该能够使用:hvplot.show(obj)显示返回的对象不幸的是,这不起作用,但我没有时间进一步调查,因为这看起来是一个有价值的选择,我现在就接受它。这看起来正是我想要的!但是,它似乎与Spyder不起作用:我得到了[142]::NdOverlay[cyl]:分散[位移](马力)而不是图像…(Windows/Python 3.6)是的,它主要设置为在笔记本中工作。但是您应该能够使用:hvplot.show(obj)显示返回的对象不幸的是,这不起作用,但我没有时间进一步调查,因为这看起来是一个有价值的选择,我现在就接受它。谢谢你更新这个问题。我已经更改了“接受的答案”请注意这个问题,因为我认为这是大多数在未来遇到这个问题的人都会寻找的。谢谢你更新这个问题。我已经将“接受答案”标记改为这个问题,因为我认为这是大多数在未来遇到这个问题的人都会寻找的。