我制作了一个看起来像这样的直方图:
我用来生成这个图的代码:
sns.countplot(table.column_name)
Run Code Online (Sandbox Code Playgroud)
如您所见,由于数据分布不均,整个直方图聚集在左端。
如何在左端放大?
我尝试过的一种方法,它给了我稍微好一点的结果:
plt.xlim(0,25)
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
我一直在尝试在 Seaborn 中使用 pointplot,总的来说它可以满足我的需求,而且我对它的功能印象深刻。
我的用例是相当标准的:
sns.pointplot(x="Category_1", y="Parameter", hue="Category 2", data=df);
Run Code Online (Sandbox Code Playgroud)
我的问题是我用于色调的类别包含以下形式的字符串:
"1 string1", "2 string2", "3 string3", etc....
Run Code Online (Sandbox Code Playgroud)
这是设计使然,以便我可以在排序时获得特定顺序。但是,当我运行 Seaborn 函数时,顺序是不同的。
Seaborn 是按照什么逻辑进行排序的,有没有办法强制执行所需的顺序。如果我做:
A = df.Category2.unique()
A.sort()
Run Code Online (Sandbox Code Playgroud)
我得到了我想要的列表顺序。
本
我很抱歉再次问这个问题,因为我知道这之前已经被问过几次了,我已经研究了我可以在其他所有线程上找到的所有其他解决方案,但没有一个对我有用。无论我尝试什么,这些 xlabels 仍然总是水平出现并混杂在一起。我不知道为什么我的不工作而其他人工作,但我怀疑这与我在图中有三个子图有关。
我已经尝试了以下,以及许多其他的事情:
ax1.set_xticklabels(rotation=30) <-- 什么也没发生
axs[0].set_xticklabels(rotation=30) <-- 错误
plt.xticks(rotation=45) <-- 什么也没发生
这是代码和图。
customer_rev_df = pd.DataFrame(customer_rev, columns='Week Revenue Pieces Stops'.split())
print(customer_rev_df.set_index('Week'))
sns.set_style(style='whitegrid')
fig, axs = plt.subplots(ncols=3, figsize=(16, 6))
ax1 = sns.factorplot(x='Week', y='Revenue', data=customer_rev_df, ax=axs[0])
ax2 = sns.factorplot(x='Week', y='Stops', data=customer_rev_df, ax=axs[1])
ax3 = sns.factorplot(x='Week', y='Pieces', data=customer_rev_df, ax=axs[2])
axs[0].set_ylabel('Revenue')
axs[1].set_ylabel('Stops')
axs[2].set_ylabel('Pieces')
axs[0].set_title('Weekly Revenue')
axs[1].set_title('Weekly Stops')
axs[2].set_title('Weekly Pieces')
plt.tight_layout()
fig.show()
Run Code Online (Sandbox Code Playgroud)
我承认我还比较新,所以放轻松!任何帮助将不胜感激。谢谢!
有没有办法在 Seaborn 或 Matplotlib 中指定热图色标的颜色增量。例如,对于包含 0-1 之间的归一化值的数据帧,要指定 100,离散的颜色增量,以便将每个值与其他值区分开来?
先感谢您
我正在使用下面的代码为一个变量绘制两个 kdeplots:
income_df = attrition_df[['Annual Income','Terminated']]
income_left = income_df.loc[income_df['Terminated'] == 1]
income_stayed = income_df.loc[income_df['Terminated'] == 0]
x = np.array(income_left['Annual Income'].values)
y = np.array(income_stayed['Annual Income'].values)
ax = sns.kdeplot(x,y, shade=True)
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
ValueError:观察的数量必须大于变量的数量。
我正在尝试制作一系列 matplotlib 图,为不同类别的对象绘制时间跨度。每个绘图都有一个相同的 x 轴和绘图元素,如标题和图例。但是,每个图中出现的类别不同;每个图代表一个不同的采样单元,每个单元只包含所有可能类别的一个子集。
我在确定如何设置图形和轴尺寸时遇到了很多麻烦。水平尺寸应始终保持不变,但垂直尺寸需要缩放到该采样单元中表示的类数。对于每个绘图,y 轴上每个条目之间的距离应该相等。
似乎我的困难在于我可以用 设置图形的绝对大小(以英寸为单位)plt.figure(figsize=(w,h)),但我只能用相对尺寸设置轴的大小(例如,fig.add_axes([0.3,0.05,0.6,0.85])这会导致我的 x 轴标签变得类数少时切断。
这是我想要得到的东西与我得到的东西的 MSPaint 版本。

这是我使用的代码的简化版本。希望这足以确定问题/解决方案。
import pandas as pd
import matplotlib.pyplot as plt
import pylab as pl
from matplotlib import collections as mc
from matplotlib.lines import Line2D
import seaborn as sns
# elements for x-axis
start = 1
end = 6
interval = 1 # x-axis tick interval
xticks = [x for x in range(start, end, interval)] # create x ticks
# items needed for legend …Run Code Online (Sandbox Code Playgroud) 尝试使用 seaborn 调色板绘制一些数据时,我遇到了一个非常令人沮丧的问题。我的工作流程是对我的数据框执行 groupby 操作,并使用如下代码将每个组绘制为自己的曲线:
import seaborn as sns; sns.set_style('whitegrid')
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True, figsize=(16, 6))
inner = d.groupby(['dr_min', 'dr_max'])
n = len(inner)
cmap = sns.color_palette("Blues", n_colors=n)
inner.plot(x='limit_l', y='lccdf', ax=ax1, color=cmap, legend=False)
inner.plot(x='limit_r', y='rcdf', ax=ax2, color=cmap, legend=False)
Run Code Online (Sandbox Code Playgroud)
我希望看到我的每个 groupby 参数的曲线,从颜色图中可以看到清晰的阴影,如下所示:

相反,我的曲线如下所示,根本没有颜色等级。谁能帮助我理解为什么会发生这种情况?
我在 python 中使用 seaborn 来绘制和保存图形。在 jupyter notebook 中,它看起来像这样。
但是当我使用下面的代码来保存图形时,它是这样显示的。 只是其中的一部分
我不知道为什么。这是我的python代码。
whole_pt = whole_rules_df.pivot_table(index='whole_rules_from', columns='whole_rules_to', values='whole_rules_value', aggfunc=np.sum)
f, ax = plt.subplots(figsize=(12,8))
one_heat = sns.heatmap(whole_pt, fmt="d",cmap='YlGnBu', ax=ax,vmin=0,vmax=1)
one_heat.get_figure().savefig('whole_rules.jpg')
Run Code Online (Sandbox Code Playgroud) sns.boxplot(data=df, width=0.5)
plt.title(f'Distribution of scores for initial and resubmission\
\nonly among students who resubmitted at all.\
\n(n = {df.shape[0]})')
Run Code Online (Sandbox Code Playgroud)
我想使用更大的字体,并在顶部的白边留出更多的空间,这样标题就不会被塞进去。令人惊讶的是,尽管进行了一些认真的谷歌搜索,但我完全无法找到该选项!
我希望散点图中的不同类具有不同的alpha值(透明度)。
sns.scatterplot(x="BorrowerAPR", y="LoanOriginalAmount", data=df_new,
alpha=0.03, hue="LoanStatus")
Run Code Online (Sandbox Code Playgroud)
期望Class 1 alpha为0.2。