【发布时间】:2018-03-05 03:36:37
【问题描述】:
我正在根据由目标变量(植物物种)着色的 Iris 数据集从 DataFrame 制作 pd.scatter_matrix() 图。当我运行下面的代码时,我得到一个带有黑色、灰色和白色(!)彩色散射点的散射矩阵,这阻碍了可视化。网格似乎也不一致,显然只有靠近轴的图才能获得相应的网格。我想要一个遵循 sns 默认调色板(蓝色、绿色、红色)的漂亮网格和散点矩阵。
为什么 seaborn 绘图风格和 pd.scatter_matrix() 的使用强制执行不同的(可怕的!)调色板,然后散点图和不一致的网格线的默认值?如何解决这些可视化问题?
我已经将 seaborn 更新到了相当新的版本(2017 年 7 月的 0.8)。还尝试了熊猫 pd.plotting.scatter_matrix() 的 scatter_matrix 图的非弃用版本,但没有运气。如果我使用“ggplot”样式,散点图的调色板是正确的,但网格仍然不一致。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
plt.style.use('seaborn')
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
df = pd.DataFrame(X, columns = iris.feature_names)
pd.scatter_matrix(df, c=y, figsize = [8,8],
s=80, marker = 'D');
软件包版本:
熊猫版本:0.20.1
matplotlib 版本:2.0.2
seaborn 版本:0.8.0
【问题讨论】:
-
我猜熊猫散布矩阵在样式方面不是最佳选择。你知道seaborn's paigrid吗?
-
我不是。感谢您指出它比熊猫解决方案要好得多。从现在开始我将使用pairgrid。 Python 可视化领域似乎充满了陷阱……
-
@franciobr 请您澄清一下您的问题到底是什么?默认/seaborn matplotlib 的美学还是别的什么?
-
@SergeyBushmanovm 感谢您的帮助。情节看起来很糟糕,与seaborn的默认美学完全不同。我不知道散点图从哪个调色板中得到黑色/灰色/白色点。它不是来自默认的 seaborn(蓝色、绿色、红色)或 matplotlib 调色板,并且网格线有问题。我希望有人能在我使用 pd.scatter_matrix() 的方式上指出一些错误,但我想外卖是 pd.scatter_matrix 搞砸了绘图的风格,应该使用其他功能,例如 sns.pairgrid 代替。
标签: python pandas matplotlib data-visualization seaborn