使用matplotlib,我可以在一个图上创建一个包含两个数据集的直方图(一个与另一个相邻,不是叠加).
import matplotlib.pyplot as plt
import random
x = [random.randrange(100) for i in range(100)]
y = [random.randrange(100) for i in range(100)]
plt.hist([x, y])
plt.show()
Run Code Online (Sandbox Code Playgroud)
这产生以下图.
但是,当我尝试用seabron做这件事时;
import seaborn as sns
sns.distplot([x, y])
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ValueError: color kwarg must have one color per dataset
Run Code Online (Sandbox Code Playgroud)
那么我尝试添加一些颜色值:
sns.distplot([x, y], color=['r', 'b'])
Run Code Online (Sandbox Code Playgroud)
我得到了同样的错误.我看到这篇关于如何叠加图形的文章,但我希望这些直方图是并排的,而不是叠加.
在查看文档时,它没有指定如何将列表列表作为第一个参数'a'.
如何使用seaborn实现这种直方图?
Seaborn regplot文档中列出的所有示例都显示了相同的点和回归线颜色.更改color参数会同时更改.如何为点设置不同的颜色作为线?
我正在尝试绘制数据框的 2 列(一个作为条形图,另一个作为散点图)。我可以在 Matplotlib 中使用它,但我希望它与 Seaborn 一起使用。
这是代码:
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
df = pd.DataFrame({'Announced Year': [2016, 2017, 2018, 2019],
'Amount Awarded': [12978216, 11582629, 11178338, 11369267],
'Number of Awarded': [18, 14, 13, 13]})
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
sns.scatterplot(x="Announced Year", y="Number of Awarded", data=df, ax=ax2)
sns.barplot(x="Announced Year", y="Amount Awarded", data=df, ax=ax1)
fig.tight_layout() # otherwise the right y-label is slightly clipped
plt.title('2016 to 2019 Announcements')
Run Code Online (Sandbox Code Playgroud)

我决定试一试seaborn 0.11.0 版!据我所知,使用将替换 distplot 的 displot 函数。我只是想弄清楚如何将高斯拟合绘制到直方图上。这是一些示例代码。
import seaborn as sns
import numpy as np
x = np.random.normal(size=500) * 0.1
Run Code Online (Sandbox Code Playgroud)
使用 distplot 我可以做到:
sns.distplot(x, kde=False, fit=norm)
Run Code Online (Sandbox Code Playgroud)
但是如何在 displot 或 histplot 中进行呢?
使用seaborn,我想在一张图中绘制4个不同数组的kde分布。问题是所有数组的长度彼此不同。
mc_means_TP.shape, mc_means_TN.shape, mc_means_FP.shape, mc_means_FN.shape
> ((3640, 1), (3566, 1), (170, 1), (238, 1))
Run Code Online (Sandbox Code Playgroud)
这使得需要一些解决方法,其中我通过共享同一轴将它们全部绘制在一个图中:
import seaborn as sns
fig, ax = plt.subplots()
sns.kdeplot(data=mc_means_TP, ax=ax, color='red', fill=True)
sns.kdeplot(data=mc_means_TN, ax=ax, color='green', fill=True)
sns.kdeplot(data=mc_means_FP, ax=ax, color='yellow')
sns.kdeplot(data=mc_means_FN, ax=ax, color='purple')
Run Code Online (Sandbox Code Playgroud)
结果如下:
显然,由于它们共享同一轴,因此不可能对它们进行不同的着色,它们都是蓝色的。
我尝试用 解决这个问题ax.set_prop_cycle(color=['red', 'green', 'blue', 'purple']),但它不起作用,我猜是因为我ax对所有绘图都使用相同的方法。
我想这个问题可以分解为如何在一个图中可视化不同大小的数据数组的分布密度?