如何将xticks更改为特定范围[重复]

Posted

技术标签:

【中文标题】如何将xticks更改为特定范围[重复]【英文标题】:how to change the xticks to a specific range [duplicate] 【发布时间】:2019-11-04 21:08:33 【问题描述】:

我画了一个计数图如下:

ax, fig = plt.subplots()
sns.countplot(user_id_count[:100])

(数组([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15、16、 17、18、19、20、21、22、23、24、25、26、27、28、29、30、31、32、33、 34, 35, 36, 37, 38, 39, 40]), )

但我想将 xticks 更改为仅显示 10, 20, 30, 40 这 4 个数字,所以我检查了文档并将其重新编码如下:

ax, fig = plt.subplots()
sns.countplot(user_id_count[:100])
plt.xticks(range(10, 41, 10))

但 xticks 不是我想要的。 我已经搜索了相关问题,但没有得到我想要的。 所以如果不介意有人可以帮助我吗?

【问题讨论】:

plt.xticks(range(9, 40, 10), range(10, 41, 10)) 怎么样?第一个范围是刻度线的 x 值,第二个范围是它们的标签。 @Heike 你是对的,这行得通。但是如果将范围设置在数据之外,它将成为图中空白的一部分。 【参考方案1】:

一种方法是在 x 轴上定义标签。来自matplotlib 模块的set_xticklabels 方法完成了(doc) 的工作。 通过定义您自己的标签,您可以通过将标签设置为等于'' 来隐藏它们。

通过定义自己的标签,您需要注意它们仍然与您的数据一致

这是一个例子:

# import modules
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

#Init seaborn
sns.set()

# Your data to count
y = np.random.randint(0,41,1000)

# Create the new x-axis labels 
x_labels = ['' if i%10 != 0 else str(i) for i in range(len(np.unique(y)))]
print(x_labels)
# ['0', '', '', '', '', '', '', '', '', '', 
# '10', '', '', '', '', '', '', '', '', '', 
# '20', '', '', '', '', '', '', '', '', '', 
# '30', '', '', '', '', '', '', '', '', '', '40']

# Create plot
fig, ax = plt.subplots()
sns.countplot(y)

# Set the new x axis labels
ax.set_xticklabels(x_labels)
# Show graph
plt.show()

【讨论】:

以上是关于如何将xticks更改为特定范围[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Matplotlib - 将 Xticks 更改为线上的值而不是数据点

如何将 UIDatePicker 更改为特定时间(在代码中)

如何将 Magento 库存设置更改为网站范围而不是全球范围?

如何将字符串日期范围更改为开始和结束日期?

如何将 NumberFormat 从特定货币更改为美元货币

我如何将queryString值更改为(int)[重复]