我正在尝试绘制一个选择框和胡须子地块,仅在左侧地块上有一个可见的y轴。我正在通过熊猫数据帧循环来实现这一点。然而,无论何时使用,我用来移除轴的鄙视函数似乎都适用于所有绘图。在这种情况下,最后的子图应该没有y轴,但该轴也会从左侧图中删除。有没有办法绕过这个问题?
是否可以将每个子批次与应用于其他子批次的鄙视功能隔离?这似乎只发生在卑鄙的函数中。当前代码如下所示,但我也尝试在循环之前(使用[fig,axs=plt.subplot(ncols=3,nrows=4)]和循环内部(ax=plt.subplot(4,3,q 1))创建特定轴,然后尝试在seaborn绘图函数中调用ax=ax)。
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(rc={"figure.figsize":(10,20)}, font_scale=1) # set size of plots and font
sns.set_style("ticks", {"font.sans-serif": "Arial"}) # set style for plots
sns.set_palette("cubehelix", n_colors=len(participants)) # set colour palette for individual datapoints
plt.figure
for q in range(11):
plt.subplot(4,3,q+1)
qplot = sns.swarmplot(data=eval("s" + str(q+1)), x="variable", y="value", hue="Participant", size=3) # plot individual participant data as points
qplot.legend().set_visible(False) # hide the legend for individual participant data
qplot = sns.boxplot(data=eval("s" + str(q+1)), x="variable", y="value", palette="Greys", linewidth=2, fliersize=0, width=0.85) # plot the boxplot
qplot.set(ylim=(-3.5,3.5), xlabel="Condition", ylabel="Response") # set y axis values and label axes
plt.title("S" + str(q+1)) # add a title
if (q == 0) or (q == 3) or (q == 6):
qplot.set(xticklabels=[], xlabel=None, xticks = []) # remove ticks and labels
sns.despine(bottom = True, top=True, right=True, left=False, trim=True) # remove spines
if (q == 1) or (q == 2) or (q == 4) or (q == 5) or (q == 7):
qplot.set(xticklabels=[], xlabel=None, xticks = [], yticklabels=[], ylabel = None, yticks = []) # remove ticks and labels
sns.despine(bottom = True, top=True, right=True, left=True, trim=True) # remove spines
if (q == 9):
sns.despine(top=True, right = True,trim=True) # remove spines
if (q == 8) or (q == 10):
qplot.set(yticks = [], yticklabels=[], ylabel = None) # remove ticks and labels
sns.despine(bottom=True, top=True, left=True, right=True, trim=True) # remove spines
for axis in ["top","bottom","left","right"]:
qplot.spines[axis].set_linewidth(2) # set linewidth of axes
qplot.tick_params(axis = "x", width=0) # set linewidth of x ticks to zero
qplot.tick_params(axis = "y", width=2) # set linewidth of y ticks
对于将来偶然发现这个问题的寻求答案者,您可以使用sns.skeene()
,执行如下操作以显示/隐藏轴网格中的脊椎:
fig, axs = plt.subplots(4,3)
for ax in axs.flat:
if ax.is_first_col():
if ax.is_last_row():
sns.despine(bottom=False, left=False, ax=ax)
else:
sns.despine(bottom=True, left=False, ax=ax)
elif ax.is_last_row():
sns.despine(bottom=False, left=True, ax=ax)
else:
sns.despine(bottom=True, left=True, ax=ax)
@PaulH很好地重构了上面的代码。他的版本更紧凑,更容易阅读:
fig, axs = plt.subplots(4,3)
for ax in axs.flat:
sns.despine(bottom=not ax.is_last_row(), left=not ax.is_first_col(), ax=ax)
问题内容: 可以说我有一个这样的列表: 我有一个函数,假设我想将该函数应用于该函数的每个子列表,可以计算出有关两个列表的一些分数。如何将此功能应用于的每个列表并在新列表中返回每个分数,如下所示: 我尝试使用以下功能: 问题答案: 您可以使用内置函数来执行此操作。 因此,如果您要应用的函数是,则可以执行以下操作: 在中,上面返回了一个地图迭代器,因此您需要一个显式调用: 如果您要为此编写一些必须在P
问题内容: 在将其标记为重复之前,让我向您解释,我已经阅读了此页面以及许多其他内容,但仍然没有找到解决问题的方法。 这就是我遇到的问题:给定两个2D数组,我想在两个数组上应用函数F。F将两个一维数组作为输入。 请注意,这仅用于演示。这里真正的问题是在两组一维数组上工作的泛型函数F。 向量化要么完全失败,要么出错,或者应用逐个元素的功能,而不是逐个数组(或逐行) 迭代地应用功能;例如,使用上面所定义
我试图计算一个折扣,我想应用到我的数据帧的两列中的每一行,并将结果添加到一个新列中。 我已经尝试了很多方法,通过遵循现有的例子,但是每次都发生错误。 我将函数定义为: 然后尝试将该函数应用于我的数据框 我希望有一个新的列,其中每一行都是应用于ordini[“revenue1”]和ordini[“revenue2”]的函数的结果。 但我得到了以下错误: ValueError:序列的真值不明确。使用a
问题内容: 我对熊猫还很陌生,所以我希望这将是一个简单的答案(我也感谢所有指向数据框设置的指针) 假设我有以下DataFrame: 现在,我想按“ gp”分组并获取“ vector”的均值 我试过了 乃至 但我收到一个错误,没有要聚合的“数字类型”。那么np.arrays在熊猫中不起作用吗? 问题答案: 对我来说,它有效: 我取两次平均值,因为您想要向量均值的均值组值(不是吗?)。 如果要使用均值
我正在使用pandas函数,希望从字符串中删除多个字符。 我正在尝试使用< code>pandas清理CSV文件中的一些交易数据。我有一个以< code>Object数据类型存储交易金额的列。在将它更改为< code>float数据类型之前,我需要从大于< code>999.99的数字中删除< code>$字符和任何< code >,字符。我可以一次做一个。但是,我想知道是否可以传入多个值来清理它
如何在熊猫身上做到这一点: 更新2:这个问题是在V0.11.0左右提出的。因此,许多问题和答案都不太相关。