如何解决在matplotlib中绘制对数正态尺度
我有两个列表,它们是要绘制的x,y点:
microns = [38,45,53,63,75,90,106,125,150,180]
cumulative_dist = [25.037,32.577,38.34,43.427,51.57,56.99,62.41,69.537,74.85,81.927]
问题是我需要按照下图(more info here)中显示的比例绘制它们,这是对数正态图。
如何使用matplotlib获得这种比例?
我想我需要使用matplotlib.scale.FuncScale,但我不确定如何到达那里。
解决方法
在David的有深刻见解的评论之后,我阅读了this页并设法按照我想要的方式绘制了该图。
from matplotlib.ticker import ScalarFormatter,AutoLocator
from matplotlib import pyplot
import pandas as pd
import probscale
fig,ax = pyplot.subplots(figsize=(9,6))
microns = [38,45,53,63,75,90,106,125,150,180]
cumulative_dist = [25.037,32.577,38.34,43.427,51.57,56.99,62.41,69.537,74.85,81.927]
probscale.probplot(pd.Series(microns,index=cumulative_dist),ax=ax,plottype='prob',probax='y',datascale='log',problabel='Cumulative Distribution (%)',datalabel='Particle Size (μm)',scatter_kws=dict(marker='.',linestyle='none',markersize=15))
ax.set_xlim(left=28,right=210)
ax.set_ylim(bottom=1,top=99)
ax.set_title('Log Normal Plot')
ax.grid(True,axis='both',which='major')
formatter = ScalarFormatter()
formatter.set_scientific(False)
ax.xaxis.set_major_formatter(formatter)
ax.xaxis.set_minor_formatter(formatter)
ax.xaxis.set_major_locator(AutoLocator())
ax.set_xticks([]) # for major ticks
ax.set_xticks([],minor=True) # for minor ticks
ax.set_xticks(microns)
fig.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。