首页 > 解决方案 > 当我在 pycharm 中运行 '''sns.histplot(df['price'])''' 时,我得到了代码输出但没有图表,这是为什么呢?

问题描述

我正在使用 pycharm 使用 Seaborn 运行一些代码。我对 python 很陌生,只是想学习一些技巧,所以我正在在线学习教程。我已经导入了必要的库并运行了以下代码

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

# import the data saved as a csv
df = pd.read_csv('summer-products-with-rating-and-performance_2020-08.csv')

df["has_urgency_banner"] = df["has_urgency_banner"].fillna(0)

df["discount"] = (df["retail_price"] -
df["price"])/df["retail_price"]

df["rating_five_percent"] = df["rating_five_count"]/df["rating_count"]
df["rating_four_percent"] = df["rating_four_count"]/df["rating_count"]
df["rating_three_percent"] = df["rating_three_count"]/df["rating_count"]
df["rating_two_percent"] = df["rating_two_count"]/df["rating_count"]
df["rating_one_percent"] = df["rating_one_count"]/df["rating_count"]

ratings = [
    "rating_five_percent",
    "rating_four_percent",
    "rating_three_percent",
    "rating_two_percent",
    "rating_one_percent"
]

for rating in ratings:
    df[rating] = df[rating].apply(lambda x: x if x>= 0 and x<= 1 else 0)

# Distribution plot on price
sns.histplot(df['price'])

我的输出如下:

进程以退出代码 0 结束

所以我知道代码中没有错误,但我没有看到任何我应该看到的图表。我找到了解决这个问题的方法,最后使用这个

plt.show()

它会打开一个新选项卡并使用 matplotlib 向我展示一个类似的图表。

但是,在我用来跟随的代码中,未导入或使用 matplotlib(我知道 seaborn 已内置 Matplotlib 功能),因为未使用 plt.show 语句,但仍实现了可视化图形。

我还使用了 print ,它给了我以下信息

AxesSubplot(0.125,0.11;0.775x0.77)

最后要提的是,我跟随的代码使用以下

import seaborn as sns
# Distribution plot on price
sns.distplot(df['price'])

但是 distplot 现在已经贬值了,我现在使用 histplot 因为我认为这是与使用 displot 相比的最佳选择,如果不正确,请告诉我。

我觉得有一个简单的解决方案可以解释为什么我没有看到图表,但我不确定这是否与 pycharm 或代码中的某些内容有关。

标签: pythonmatplotlibgraphseaborn

解决方案


matplotlib 是seaborn 的依赖项。因此,使用import matplotlib.pyplot as plt和调用导入 matplotlibplt.show()不会给您的代码增加任何开销。

虽然目前没有sns.plt.show()(参见这个类似的问题进行讨论)很烦人,但我认为这是在使用 PyCharm 社区时强制显示图表的最简单解决方案。

以这种方式导入 matplotlib 不会影响练习的运行方式,只要您使用plt.


推荐阅读