- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建按列分组的数据框的 distplot
data_plot = creditcard_df.copy()
amount = data_plot['Amount']
data_plot.drop(labels=['Amount'], axis=1, inplace = True)
data_plot.insert(0, 'Amount', amount)
# Plot the distributions of the features
columns = data_plot.iloc[:,0:30].columns
plt.figure(figsize=(12,30*4))
grids = gridspec.GridSpec(30, 1)
for grid, index in enumerate(data_plot[columns]):
ax = plt.subplot(grids[grid])
sns.distplot(data_plot[index][data_plot.Class == 1], hist=False, kde_kws={"shade": True}, bins=20)
sns.distplot(data_plot[index][data_plot.Class == 0], hist=False, kde_kws={"shade": True}, bins=20)
ax.set_xlabel("")
ax.set_title("Distribution of Column: " + str(index))
plt.show()
我尝试对 y 轴使用对数刻度,更改 gridspec 和 figsize;但所有这些都只会弄乱分布。有没有办法使地 block 统一?
最佳答案
seaborn.distplot
已弃用。使用seaborn.kdeplot
,这是一个轴级图。否则使用 seaborn.displot
用于图形级别的情节。python 3.8.11
、pandas 1.3.2
、matplotlib 3.4.2
、seaborn 0.11 中测试。 2
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(365)
rows = 10000
data = {'a': np.random.normal(5, 5, rows),
'b': np.random.normal(20, 5, rows),
'c': np.random.normal(35, 5, rows),
'd': np.random.normal(500, 50, rows),
'e': np.random.normal(6500, 500, rows),
'class': np.random.choice([0, 1], size=(rows), p=[0.25, 0.75])}
df = pd.DataFrame(data)
# display(df.head(3))
a b c d e class
0 5.839606 20.807027 34.798230 509.328065 6003.228497 0
1 7.617526 21.691519 40.519995 445.724478 7204.039621 0
2 9.086878 27.193222 32.776264 498.254687 6810.960924 1
seaborn.kdeplot
fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(15, 7), sharex=False, sharey=False)
axes = axes.ravel() # array to 1D
cols = df.columns[:-1] # create a list of dataframe columns to use
for col, ax in zip(cols, axes):
data = df[[col, 'class']] # select the data
sns.kdeplot(data=data, x=col, hue='class', shade=True, ax=ax)
ax.set(title=f'Distribution of Column: {col}', xlabel=None)
fig.delaxes(axes[5]) # delete the empty subplot
fig.tight_layout()
plt.show()
seaborn.displot
# convert the dataframe from wide to long
dfm = df.melt(id_vars='class', var_name='Distribution')
# display(dfm.head(3))
class Distribution value
0 0 a 5.839606
1 0 a 7.617526
2 1 a 9.086878
# plot
sns.displot(kind='kde', data=dfm, col='Distribution', col_wrap=3, x='value', hue='class', fill=True, facet_kws={'sharey': False, 'sharex': False})
关于python - 绘制多个 seaborn 分布图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69067250/
我正在尝试创建按列分组的数据框的 distplot data_plot = creditcard_df.copy() amount = data_plot['Amount'] data_plot.dr
我有一个 seaborn displot 看起来像这样 我想把一些线做成虚线。我怎样才能做到这一点?我尝试以 2 种不同的方式使用 linestyle,但出现错误 #### approach 1 fo
我没有在这个方向找到任何东西,但如果我错了,请告诉我。 这个问题是针对seaborn的jointgrid方法和jointplot方法提出的,因为到目前为止,两者都为我提供了相同的基本结果。但如果一种方
我使用以下代码生成了一个 Seaborn 累积分布图: AlphaGraphCum = sns.distplot(dfControl["alpha"], hist_kws={
我正在使用 Pycharm 运行机器学习界面代码。 SVM 算法不断使我的界面崩溃,并出现以下错误: line 1220, in pushButton_8_handlerax1 = sns.distp
我已经篡改这个脚本有一段时间了,似乎无法弄清楚我做错了什么。 脚本: import seaborn as sns import pandas as pd import matplotlib.pyplo
我是一名优秀的程序员,十分优秀!