问题描述
我有一些数据,我试图根据这些数据在 seaborn 中构建计数图.所以我做这样的事情:
I have some data, based on which I am trying to build a countplot in seaborn. So I do something like this:
data = np.hstack((np.random.normal(10, 5, 10000), np.random.normal(30, 8, 10000))).astype(int)
plot_ = sns.countplot(data)
并获取我的计数图:
问题在于x轴上的刻度太密集(这使它们无用).我试图通过 plot_.xticks = np.arange(0,40,10)
降低密度,但这没有帮助.
The problem is that ticks on the x-axis are too dense (which makes them useless). I tried to decrease the density with plot_.xticks=np.arange(0, 40, 10)
but it didn't help.
还有没有办法用一种颜色制作情节?
Also is there a way to make the plot in one color?
推荐答案
滴答频率
这里似乎有多个问题:
Tick frequency
There seem to be multiple issues here:
- 您在使用 plt.xticks 时使用了 = 运算符.您应该改用函数调用(但不是在这里;请先阅读第 2 点)!
- seaborn 的计数图返回轴对象,而不是图形
- 您需要使用更改x-ticks的轴级方法(不是
plt.xticks()
)
- 您需要使用更改x-ticks的轴级方法(不是
试试这个:
for ind, label in enumerate(plot_.get_xticklabels()):
if ind % 10 == 0: # every 10th label is kept
label.set_visible(True)
else:
label.set_visible(False)
颜色
我认为这里的数据设置对于这种类型的图不是最佳的.Seaborn 将每一个独特的价值诠释为新的品类,并推出新的颜色.如果我是对的,颜色/和 x-ticks 的数量等于 np.unique(data) 的数量.
Colors
I think the data-setup is not optimal here for this type of plot. Seaborn will interpret each unique value as new category and introduce a new color. If i'm right, the number of colors / and x-ticks equals the number of np.unique(data).
将您的数据与seaborn的示例进行比较(所有示例均基于可以导入以进行检查的数据).
Compare your data to seaborn's examples (which are all based on data which can be imported to check).
我还认为,使用pandas数据框(而不是numpy数组)与seaborn一起工作要容易得多;我经常以错误的方式准备数据,并且子集选择需要预处理;数据框提供了更多).我认为 seaborn 的大多数示例都使用这种数据输入.
I also think working with seaborn is much easier using pandas dataframes (and not numpy arrays; i often prepare my data in a wrong way and subset-selection needs preprocessing; dataframes offer more). I think most of seaborn's examples use this data-input.
这篇关于如何降低seaborn中x-ticks的密度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!