我正在尝试使用python中的seaborn生成多面板图形,我希望多面板图形中的点的颜色由一个连续变量指定。下面是一个我正在尝试使用“iris”数据集的示例:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib as mpl
import matplotlib.pyplot as plt
iris = sns.load_dataset('iris')
g = sns.FacetGrid(iris, col = 'species', hue = 'petal_length', palette = 'seismic')
g = g.map(plt.scatter, 'sepal_length', 'sepal_width', s = 100, alpha = 0.5)
g.add_legend()
这很好,但传说太长了。我想抽样大约1/4的这些值(理想情况下)或限制显示一个彩色条。 例如,这样的事情可能是可以接受的,但我还是想把它分成三个物种。
plt.scatter(iris.sepal_length, iris.sepal_width, alpha = .8, c = iris.petal_length, cmap = 'seismic')
cbar = plt.colorbar()
你知道我怎样才能充分利用这两个情节吗?
编辑: 这个话题似乎是个好的开始。
https://github.com/mwaskom/seaborn/issues/582
不知何故,对于这个用户来说,在其他所有运行之后简单地添加plt.colorbar似乎是可行的。但在这种情况下似乎没有帮助。
FacetGrid
hue
是分类的,不是连续的。为FacetGrid
中的散点图获取连续的颜色映射需要一点工作(与链接Github问题中的imshow
不同,matplotlib不保留对“当前活动散点图映射器”的引用,因此对plt.colorbar
的魔法调用不会获取应用于点颜色的映射)。既然你问的是一个关于散布的传说,你可以修改@mwaskom的解决方案,生成一个散布点如下的传说:
相关问题 更多 >
编程相关推荐