Seaborn 线图对数刻度
Posted
技术标签:
【中文标题】Seaborn 线图对数刻度【英文标题】:Seaborn lineplot logarithmic scale 【发布时间】:2021-02-22 09:49:13 【问题描述】:在我的绘图中添加对数 X 轴时遇到问题。我想使用A
、B
和C
方法根据样本大小显示结果。
我的数据框:
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 轴刻度