Seaborn 线图对数刻度

Posted

技术标签:

【中文标题】Seaborn 线图对数刻度【英文标题】:Seaborn lineplot logarithmic scale 【发布时间】:2021-02-22 09:49:13 【问题描述】:

在我的绘图中添加对数 X 轴时遇到问题。我想使用ABC 方法根据样本大小显示结果。

我的数据框:

            A         B         C
15   0.733333  0.613333  0.733333
30   0.716667  0.693333  0.766667
59   0.733684  0.678485  0.745763
118  0.796667  0.726087  0.779661
236  0.817862  0.788333  0.838983
470  0.832125  0.814468  0.836170

我想做什么:

sample_count = np.around(np.logspace(math.log10(15),math.log10(470),6))
sample_count = sample_count.astype(int)

sns.set_style('whitegrid')
g_results=sns.lineplot(data=results,dashes=0,markers=['o','o','o'])
g_results.set(xticks=sample_count)
g_results.set(xscale='log')

但是结果并不是我想要的,因为蜱虫已经完全消失了:

如果没有最后一行xscale,它看起来像这样,当然这是线性刻度,但这次带有正确的刻度:

我想要实现的是这样的:

感谢您对我的问题的帮助。

【问题讨论】:

这个问题的标题应该改成这里讲x轴,我是来y轴的,没用。 【参考方案1】:

首先将 x 轴的刻度设置为对数,然后根据需要设置 xticks 和标签。

sns.set_style('whitegrid')
g_results=sns.lineplot(data=results,dashes=0,markers=['o','o','o'])
g_results.set(xscale='log')
g_results.set(xticks=sample_count)
g_results.set(xticklabels=sample_count)

这会给你这个结果:

请注意,我使用的是对数刻度定义的 sample_count

sample_count = np.around(np.logspace(math.log10(15),math.log10(470),6))

【讨论】:

以上是关于Seaborn 线图对数刻度的主要内容,如果未能解决你的问题,请参考以下文章

使用 Seaborn 和 Matplotlib 在热图和线图的共享子图中对齐 x 轴刻度

python数据可视化(matplotlib,seaborn,plotly)

更改 Seaborn 热图中刻度标签的旋转

更改 seaborn 热图颜色条上的刻度大小

在 Seaborn 热图中保留一些刻度

seaborn 热图的人工刻度标签