- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我希望能够在 y 轴边距上绘制多个重叠的 kde 图(不需要 x 轴边距图)。每个 kde 图都对应于颜色类别(有 4 个),因此我将有 4 个 kde,每个描绘其中一个类别的分布。据我所知:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
%config InlineBackend.figure_format = 'svg'
x = [106405611, 107148674, 107151119, 107159869, 107183396, 107229405, 107231917, 107236097,
107239994, 107259338, 107273842, 107275873, 107281000, 107287770, 106452671, 106471246,
106478110, 106494135, 106518400, 106539079]
y = np.array([ 9.09803208, 5.357552 , 8.98868469, 6.84549005,
8.17990909, 10.60640521, 9.89935692, 9.24079133,
8.97441459, 9.09803208, 10.63753055, 11.82336724,
7.93663794, 8.74819285, 8.07146236, 9.82336724,
8.4429435 , 10.53332973, 8.23361968, 10.30035256])
x1 = pd.Series(x, name="$V$")
x2 = pd.Series(y, name="$Distance$")
col = np.array([2, 4, 4, 1, 3, 4, 3, 3, 4, 1, 4, 3, 2, 4, 1, 1, 2, 2, 3, 1])
g = sns.JointGrid(x1, x2)
g = g.plot_joint(plt.scatter, color=col, edgecolor="black", cmap=plt.cm.get_cmap('RdBu', 11))
cax = g.fig.add_axes([1, .25, .02, .4])
plt.colorbar(cax=cax, ticks=np.linspace(1,11,11))
g.plot_marginals(sns.kdeplot, color="black", shade=True)
最佳答案
要绘制每个类别的分布,我认为最好的方法是首先将数据合并到一个 pandas
数据框中。然后,您可以通过过滤数据框循环遍历每个唯一类别,并使用调用 sns.kdeplot
绘制分布图。
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
x = np.array([106405611, 107148674, 107151119, 107159869, 107183396, 107229405,
107231917, 107236097, 107239994, 107259338, 107273842, 107275873,
107281000, 107287770, 106452671, 106471246, 106478110, 106494135,
106518400, 106539079])
y = np.array([9.09803208, 5.357552 , 8.98868469, 6.84549005,
8.17990909, 10.60640521, 9.89935692, 9.24079133,
8.97441459, 9.09803208, 10.63753055, 11.82336724,
7.93663794, 8.74819285, 8.07146236, 9.82336724,
8.4429435 , 10.53332973, 8.23361968, 10.30035256])
col = np.array([2, 4, 4, 1, 3, 4, 3, 3, 4, 1, 4, 3, 2, 4, 1, 1, 2, 2, 3, 1])
# Combine data into DataFrame
df = pd.DataFrame({'V': x, 'Distance': y, 'col': col})
# Define colormap and create corresponding color palette
cmap = sns.diverging_palette(20, 220, as_cmap=True)
colors = sns.diverging_palette(20, 220, n=4)
# Plot data onto seaborn JointGrid
g = sns.JointGrid('V', 'Distance', data=df, ratio=2)
g = g.plot_joint(plt.scatter, c=df['col'], edgecolor="black", cmap=cmap)
# Loop through unique categories and plot individual kdes
for c in df['col'].unique():
sns.kdeplot(df['Distance'][df['col']==c], ax=g.ax_marg_y, vertical=True,
color=colors[c-1], shade=True)
sns.kdeplot(df['V'][df['col']==c], ax=g.ax_marg_x, vertical=False,
color=colors[c-1], shade=True)
在我看来,这是一个比我原来的答案更好更清晰的解决方案,在我的原始答案中我不必要地重新定义了 seaborn kdeplot
因为我没想过要这样做。感谢 mwaskom 指出这一点。另请注意,图例标签已在发布的解决方案中删除,并使用
g.ax_marg_x.legend_.remove()
g.ax_marg_y.legend_.remove()
关于python - seaborn plot_marginals 多个 kdeplots,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41512455/
我想用 seaborn.kdeplot 创建核密度估计侧面有一个颜色条。 import matplotlib.pyplot as plt import seaborn as sns import nu
我喜欢 multiple bivariate KDE plots 的 Seaborn 示例,但我希望在该示例中使用标准的 matplotlib 图例而不是自定义标签。 这是我尝试使用图例的示例: im
我正在尝试在 map (Shapefile) 上绘制 Seaborn 内核密度。 为了生成内核密度,我在 Seaborn Website 中使用了以下代码 x, y = np.random.multi
我正在尝试在我的 kdeplot 中自定义我的阴影颜色。 我想使用这个调色板,从浅绿色到#3bd6b0颜色至少有 15 个级别(但以后可能会更多)。为了做到这一点,我使用了 sns.light_pal
我有一个包含 ~900 行的数据框;我正在尝试为某些列绘制 KDEplots。在某些列中,大多数值是相同的最小值。当我包含太多最小值时,KDEPlot 会突然停止显示最小值。例如,以下包括 600 个
我正在尝试获取 Seaborn kdeplot处理我的数据集的示例。由于某种原因,我的一个数据集根本没有绘制,但另一个似乎绘制得很好。为了获得最小的工作示例,我仅从非常大的数据集中采样了 10 行。
我正在使用 kdeplot像这样绘制两个双变量分布的密度,其中 df_c 和 df_n 是两个 Pandas DataFrame: f, ax = plt.subplots(figsize=(6, 6
我正在使用 seaborn 创建一个边缘分布的 kdeplot,如 this answer 中所述。 .我稍微调整了代码,得到了这个: import matplotlib.pyplot as plt
我想从 jupyter notebook 中的文档执行以下示例:https://seaborn.pydata.org/generated/seaborn.kdeplot.html tips = sns
seaborn.kdeplot 的每个 hue 组如何? , 或 seaborn.displot与 kind='kde' 被赋予不同的 linestyle? 轴级和图形级选项都将接受 linestyl
我写了一个类来绘制一些数据点。我使用 seaborn 制作了 kernel density 图,它导致 (1) 框架消失了,我想要一个刚性框架,并且 (2) 图中有网格与 (3) 我想摆脱它们的背景颜
我是 seaborn 的新手,如果这是一个简单的问题,我深表歉意,但我无法在文档中的任何地方找到关于如何在 kdeplot 中控制 n_levels 绘制的级别的描述。这是一个例子: import s
我希望能够在 y 轴边距上绘制多个重叠的 kde 图(不需要 x 轴边距图)。每个 kde 图都对应于颜色类别(有 4 个),因此我将有 4 个 kde,每个描绘其中一个类别的分布。据我所知: imp
这是我的代码 import numpy as np from numpy.random import randn import pandas as pd from scipy import stats
是否可以在绘图之前从 sns.kdeplot() 中提取数据?IE。不使用功能y.get_lines()[0].get_data() 绘图后 最佳答案 这可以通过从 matplotlib Axes 对
下面的 kdeplot 在左边有一个峰值,我想更关注它: a = np.array([1] * 100 + [5]) sns.kdeplot(a) 我通常这样做的方法是 pyplot.xlim调用,但
我想在数据框中的 (x, y) 坐标提供的 NHL 溜冰场的背景图像上绘制 NHL 投篮及其分布(通过 Seaborn kdeplot)。我的代码生成的绘图 99% 达到了我想要的位置,但我不是 10
下面的线列表表示一组线(比方说,对于某些化学光谱),以 MHz 为单位。我知道用于探测这些线的激光线宽为 5 MHz。因此,天真地,这些带宽为 5 的线的核密度估计应该给我在使用上述激光的实验中产生的
我正在尝试绘制与 seaborn 文档中描述的情况非常相似的情况 http://seaborn.pydata.org/tutorial/axis_grids.html#plotting-pairwis
我正在尝试使用 Seaborn 的 kdeplot 制作一个漂亮的自由能表面(热图)。 我非常接近,但无法想出改变颜色条比例的方法。颜色条标尺很重要,因为它应该代表 map 上不同坐标处的能量差异。我
我是一名优秀的程序员,十分优秀!