gpt4 book ai didi

python - 使用数组填充 Seaborn 子图

转载 作者:行者123 更新时间:2023-12-01 03:27:00 26 4
gpt4 key购买 nike

att_sales 表有 3 个字段itemqtyyr_monbuckets(i) 函数返回 20 个 SKU 的列表(商品值列表)。分组依据函数用于查找每个 SKU 的月销售额然后炮制出 fiddle 情节。到目前为止,练习效果很好。

我试图可视化 10 个子图中大约 200 个 SKU 的月销售额。为此,我打算使用一个迭代器从 1 运行到 10 并填充每个子图。下面的代码填充 10 个空子图中的最后一个子图那些。我该如何实现这一目标?

fig, (axis1) = plt.subplots(5,2,figsize=(15,30))
plt.xticks(rotation=45)
s=att_sales[['item','qty','yr_mon']]
s=s[s.item.isin(buckets(i))]
s=s.groupby(['item','yr_mon'], as_index=False).qty.sum()
sns.violinplot(x="item", y="qty", data=s)

Edit1:在实现 @Ted 的解决方案时,当 for 循环从 0 运行到 n 时,我收到错误 min() arg is anemptyequence 。将 for 循环更改为在 1 和 n 之间运行,提供了大部分解决方案,但不完全是。 enter image description here

我需要知道如何增加整体图和各个子图的大小,并将 xticks 的方向更改为 45 度。

最佳答案

这是一个简化的示例,我认为您可以对其进行调整以使其适合您。我在seaborn 中使用tips 数据集,并根据今天绘制了4 个不同的 fiddle 图。我还创建了一个存储桶函数,它返回一天的单个元素列表。

当使用fig,axes = plt.subplots(2,2,figsize=(10,10))创建图形时,它返回一个存储在中的matplotlib图形对象>fig 和存储在 axes 中的 matplotlib 轴对象的二维 numpy 数组。要获得左上角的图,您可以使用axes[0, 0]。如果你想要右下角的图,你可以使用axes[1, 1]。如果您创建了一个 5 行 x 2 列的图形,axes[3,0] 将是第 4 行和第一列上的图。

# create function that will return a list of items
# this particular example returns just a list of one element
def buckets(i):
return [tips.day.unique()[i]]

# load dataset and create figure
tips = sns.load_dataset("tips")
num_plots = 4
fig, axes = plt.subplots(2,2,figsize=(10,10))

# iterate through all axes and create a violin plot
for i in range(num_plots):
df = tips[tips.day.isin(buckets(i))]
row = i // 2
col = i % 2
ax_curr = axes[row, col]
sns.violinplot(x="sex", y="tip", data=df, ax=ax_curr)
ax_curr.set_title(buckets(i))

enter image description here

请注意,在这个特定的示例中,您可以使用分面网格,它将执行与我通过在单独的图中绘制每一天所做的完全相同的操作。如果您为每个 SKU 桶标记一个唯一的 ID,则可以利用构面网格。请参阅very last example on this page

关于python - 使用数组填充 Seaborn 子图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41329789/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com