如何将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 更改为特定时间(在代码中)