matplotlib 当我在pycharm中运行'''sns.histplot(df['price'])'''时,我得到了代码输出,但没有图形,这是为什么?

qvsjd97n  于 2023-02-19  发布在  PyCharm
关注(0)|答案(2)|浏览(239)

我正在使用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功能),因为在www.example.com语句中没有被使用,但仍然实现了可视化图形。plt.show statement is not used but the a visual graph is still achieved.
我还使用了打印,它提供了以下内容

AxesSubplot(0.125,0.11;0.775x0.77)

最后要提到的一点是,下面的代码im与一起使用以下代码

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

但是distplot现在已经贬值了,我现在用histplot,因为我认为这是最好的选择,如果不正确请告诉我。
我觉得有一个简单的解决方案,为什么我没有看到一个图形,但我不知道这是与pycharm或由于代码中的东西。

7y4bm7vi

7y4bm7vi1#

matplotlib是dependency of seaborn。因此,使用import matplotlib.pyplot as plt导入matplotlib并调用plt.show()不会给代码增加任何开销。
虽然目前没有sns.plt.show()(请参阅类似的question进行讨论)很烦人,但我认为这是在使用PyCharm社区时强制显示绘图的最简单解决方案。
只要使用类似plt的名称空间,以这种方式导入matplotlib不会影响练习的运行方式。

pes8fvy9

pes8fvy92#

请注意,“data”必须是PandasDataFrame对象,而不是:〈class 'pandas.core.series. series'〉我用这个,做工精细:

# Distribution plot on price

sns.histplot(df[['price']])

plt.show()

相关问题