我一直在用seaborn在python中搜索3D图,但没有看到任何。我想3D绘制一个最初使用seaborn.pairplot
绘制的数据集。有没有人可以帮我解决这两个问题:
1.我不能得到相同的调色板作为sns对图,e。例如,如何从图2中获得调色板并应用于图1上的点?
1.图例不坚持情节或不显示作为尼斯对图,e。g.当我执行plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.,ncol=4)
时,我看到以下错误:anaconda2/lib/python2.7/site-packages/matplotlib/axes/_axes。py:545:用户警告:未找到带标签的对象。使用label ='。...“kwargs在个别地块。warns.warn(“没有找到标记的对象。“
我的推荐人:How to make a 3D scatter plot in matplotlibhttps://pythonspot.com/3d-scatterplot/https://jakevdp.github.io/PythonDataScienceHandbook/04.12-three-dimensional-plotting.html
import re, seaborn as sns, numpy as np, pandas as pd, random
from pylab import *
from matplotlib.pyplot import plot, show, draw, figure, cm
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
sns.set_style("whitegrid", {'axes.grid' : False})
fig = plt.figure(figsize=(6,6))
ax = Axes3D(fig) # Method 1
# ax = fig.add_subplot(111, projection='3d') # Method 2
x = np.random.uniform(1,20,size=20)
y = np.random.uniform(1,100,size=20)
z = np.random.uniform(1,100,size=20)
ax.scatter(x, y, z, c=x, marker='o')
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
plt.show()
#Seaborn pair plot
df_3d = pd.DataFrame()
df_3d['x'] = x
df_3d['y'] = y
df_3d['z'] = z
sns.pairplot(df_3d, hue='x')
2条答案
按热度按时间inn6fuwd1#
as_hex()
方法(如this original answer中所建议的)从一个ListedColorMap
类的示例转换为Matplotlib颜色Map,该示例使用Seaborn调色板中的颜色列表进行初始化。1.从Matplotlib文档中,您可以通过获取
scatter
函数输出的句柄和标签,从散点图生成图例。代码的结果如下图所示。请注意,我生成了更多的数据点,以便更好地看到色图是相同的。此外,
ListedColorMap
的输出输出的颜色图具有透明度变化,所以我不得不手动将alpha
设置为1。mzaanser2#
图2没有调色板规范,但它看起来像是matplotlib(from here)中的Paired定性色彩图。因此,您需要在3D图的代码中使用
cmap
参数和pairplot中的palette
选项来指定。传奇更难。您可以从legend_elements创建一个。最好在这里解释一下。
所以你的代码看起来像这样(我去掉了未使用的导入):