首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只在选定的xlim中显示yticks。

只在选定的xlim中显示yticks。
EN

Stack Overflow用户
提问于 2020-03-27 03:47:15
回答 1查看 29关注 0票数 0

我想将y轴绑定到xlim,只显示在所选xlim范围内的蜱(即y轴只应包括带蓝色条的滴答,并移除带有空白值的其他滴答)。图片附呈。包括用于复制的完整代码。谢谢

代码语言:javascript
复制
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import string

k = 5
N = 100

users = pd.DataFrame({'freq' : np.random.randint(k, k + 100 , size=N),
              'id' : pd.Series(random.choice(string.ascii_uppercase) for _ in range(N)) })


fig, ax = plt.subplots()
ax.barh(users.id, users.freq)
labels = ax.get_xticklabels()
plt.setp(labels, rotation = 45, horizontalalignment = 'right')
ax.set(xlim = [90, 100], xlabel = 'Frequency', ylabel = 'ID',
title = 'Match')
ax.get_yticks()
ax.legend(labels = ('Match'), loc = 'upper right')

图像:只显示与xlim相关的yticks,移除其余的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-27 15:46:00

用总和的频率“手动”创建数据,然后过滤和绘制它似乎是一个很好的方法。

若要获得所有频率至少为90的用户,请使用

代码语言:javascript
复制
grouped_users.loc[grouped_users.freq >= 90]

为了限制最大值,需要一个布尔值和(&)和括号:

代码语言:javascript
复制
grouped_users.loc[(grouped_users.freq >= 90) & (grouped_users.freq <= 100)]

一些演示代码可以与原始情节进行比较:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import string

np.random.seed(12345)
k = 5
N = 100
users = pd.DataFrame({'freq': np.random.randint(k, k + 100, size=N),
                      'id': np.random.choice(list(string.ascii_uppercase), N)})
x0 = 90
x1 = 100
grouped_users = users.groupby('id')[['id', 'freq']].sum()
grouped_users_filtered = grouped_users.loc[grouped_users.freq >= x0]

fig, (ax0, ax1) = plt.subplots(ncols=2)
ax0.barh(users.id, users.freq)
ax1.barh(grouped_users_filtered.index, grouped_users_filtered.freq)

for ax in (ax0, ax1):
    ax.set(xlim=[x0, x1], xlabel='Frequency', ylabel='ID', title='Match')
plt.show()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60879752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档