<p class="ql-block ql-indent-1" style="text-align: justify;">单纯根据课本、或者书籍,按照章节来学习python作图,目的性不强,内容太广泛,无法将绘图技能和知识进行综合,也较难提高实际应用能力。模仿期刊的优秀图片,复制出类似的图片,不仅可以拓宽知识,增强实用性,也是对python综合技能的很好练习,也是对平时学习的有力促进和提高。</p> <p class="ql-block ql-indent-1" style="text-align: justify;">近日,看到复旦大学老师发表的1篇文章,将PFAS(全氟烷基和多氟烷基物质)的测量值,其密度曲线、分布情况的rug plot、boxplot同时展示在1张图片中,4种物质类别共4张图。每种物质按照人群不同分为2类。这种1张图片,按照类别分类,同时展示3种图片的方法非常好。因此,利用其他分类数据的值,进行了类似的画图操作,记录下来,供自己继续学习用,也供对Python绘图感兴趣的志同道合者们参考、讨论。</p> <p class="ql-block ql-indent-1" style="text-align: justify;">复旦老师的文章如下:</p> <p class="ql-block ql-indent-1" style="text-align: justify;">4种物质分人群的图片如下:</p> <p class="ql-block ql-indent-1" style="text-align: justify;">我利用分类数据,用python的matplotlib、seaborn库,模仿画出的图片如下(模拟数据中的1种物质分为3个类别):</p> <p class="ql-block ql-indent-1" style="text-align: justify;">绘图的代码如下:</p><p class="ql-block">fig= plt.figure()</p><p class="ql-block">sns.set(style="white")</p><p class="ql-block"><br></p><p class="ql-block">axes1=plt.axes([0.125,0.1,0.8,0.8])</p><p class="ql-block">sns.rugplot(data=data, x="flipper_length_mm", hue="species")</p><p class="ql-block">plt.gca().get_yaxis().set_visible(False)</p><p class="ql-block">axes1.spines['left'].set_color('none')</p><p class="ql-block">axes1.spines['top'].set_color('none')</p><p class="ql-block">axes1.spines['right'].set_color('none')</p><p class="ql-block"><br></p><p class="ql-block">axes2=plt.axes([0.125,0.3,0.8,0.8])</p><p class="ql-block">sns.kdeplot(data=data, x="flipper_length_mm", hue="species")</p><p class="ql-block">plt.gca().get_xaxis().set_visible(False)</p><p class="ql-block">axes2.spines['bottom'].set_color('none')</p><p class="ql-block">axes2.spines['top'].set_color('none')</p><p class="ql-block">axes2.spines['right'].set_color('none')</p><p class="ql-block"><br></p><p class="ql-block">axes3 = plt.axes([0.125,0.15,0.8,0.12])</p><p class="ql-block">sns.boxplot(data=data, y="species",x="flipper_length_mm", hue="species",orient='h')</p><p class="ql-block">#plt.xticks([])</p><p class="ql-block">#plt.yticks([])</p><p class="ql-block">plt.axis('off')</p><p class="ql-block">#plt.ylabel()</p><p class="ql-block">axes3.get_legend().remove()</p><p class="ql-block" style="text-align: justify;">plt.show()</p> <p class="ql-block ql-indent-1" style="text-align: justify;">上述绘图的方法不一定准确和高效,欢迎大家讨论,提出更加好的方法,共同学习,共同提高。</p>