开心实习之第二十天~鸿蒙应用开发~
今天学习的是Seaborn:从一脸懵到能画几张图 看老师讲Seaborn的PPT,本来以为数据可视化这种东西肯定特复杂,没想到跟着看下来,居然慢慢摸出点门道了。跟大家聊聊我的学习感受。 先搞懂:Seaborn到底是个啥? 看PPT之前,我只知道Python里有个叫Matplotlib的库能画图,Seaborn完全没听过。看了才明白,原来它是Matplotlib的工具——基础还是Matplotlib,但用起来更简单,画出来的图也更漂亮。 它最牛的地方是"专注统计图形"。简单说就是,如果你想分析数据里的关系、分布这些统计特征,用它来画图特别方便。开发者不用写一堆复杂代码,就能做出很专业的图,对于我们这种非专业人士来说,简直是福音。 ## 上手第一步:安装导入没想象中难 我本来以为装这种编程工具会很麻烦,结果PPT里写得明明白白,就两种方法:要么用"pip install seaborn",要么用"conda install seaborn"。要是下载慢,还能换清华源,这点特别贴心。 导入也简单,就三行代码:先import seaborn as sns,然后通常会加上import matplotlib.pyplot as plt(毕竟底层还是Matplotlib),最后用sns.set_theme()来设置主题。这个set_theme()还能调风格,比如选"whitegrid"就是浅色网格,"dark"就是深色无网格,根据画图的需求换就行,甚至还能选"paper"(小图)、"poster"(大图)这种不同场景的模板,细节考虑得挺周到。 ## 各种图表:原来数据还能这么"说话" PPT里讲了好几种常用的图,我挑几个印象深的说说: **散点图(sns.scatterplot)**:这玩意儿用来看看两个变量有没有关系特别方便。比如X变大的时候Y是不是也跟着变,画个散点图一眼就能看出来,还能加趋势线,更直观。 **折线图(sns.lineplot)**:这个就适合看变化趋势。比如记录了一段时间的数据,用折线图一画,上升还是下降,有没有波动,清清楚楚。PPT里给的例子特简单,几行代码就搞定,我试着在脑子里模拟了一下,好像也没那么难。 **柱形图(sns.barplot)**:这个我熟,平时看报告经常见。但没想到用Seaborn画这么容易,直接指定x轴、y轴和数据来源,就能自动算出均值画成柱子,比Excel里一步步调方便多了。 **箱线图(sns.boxplot)**:这个刚开始看有点懵,后来才明白,它能一下子把数据的分布情况说清楚——中位数在哪,四分位怎么分,有没有异常值,全都能从图里读出来,对于分析数据分布特别有用。 还有个**热图(sns.heatmap)** 挺有意思,专门用来展示相关性。比如两个变量是正相关还是负相关,相关程度有多高,用颜色深浅表示出来,一目了然。PPT里那个相关性矩阵的例子,连数字都能标在图上,看着就特专业。 哦对了,还有**小提琴图(sns.violinplot)**,它结合了箱线图和密度图的优点,既能看到数据的分布范围,又能看出哪里的数据更密集,形状像小提琴,还挺形象的。 ## 最大的感受:简单才是硬道理 以前总觉得数据可视化是数据分析师的专利,普通人学不会。但看了Seaborn的用法才发现,只要掌握了基本套路,其实没那么难。它的代码特别简洁,比如画个图,基本上就是"指定函数+设置x、y和数据",剩下的美化工作它都帮你做好了,不用自己调颜色、调字体大小。 而且这些图不是花架子,是真能帮你理解数据。比如看柱形图能比较不同类别的差异,看散点图能发现变量间的关系,这些对于做决策、找问题都特别有用。 现在我总算明白为什么那么多人推荐Seaborn了——它把复杂的画图过程简化了,让更多人能轻松地用数据说话。虽然我现在还只是看懂了PPT里的例子,没实际动手画过,但已经有点跃跃欲试了。打算接下来找个数据集练练手,争取早日能用Seaborn画出像样的图来。 总的来说,学Seaborn的过程比我想象中顺利多了,这种"用简单代码做出专业效果"的工具,真的很适合新手入门。如果你也对数据可视化感兴趣,不妨从Seaborn试试,说不定会跟我一样,发现其中的乐趣呢!最后给大家看一下我对它的应用,代码奉上。

import matplotlib.pyplot as plt
img_array=plt.imread('tiger.jpeg')
tiger=img_array
plt.figure(figsize=(10,6))
for i in range(1,5):
plt.subplot(2,2,i)
x=1-0.2*(i-1)
plt.axis('off')
plt.title('x={:.1f}'.format(x))
plt.imshow(tiger*x)
plt.show()
plt.figure(figsize=(6,6))
plt.imshow(tiger[:300,100:400,:])
plt.axis('off')
plt.show()
red_tiger=tiger.copy()
red_tiger[:,:,[1,2]]=0
plt.figure(figsize=(10,10))
plt.imshow(red_tiger)
plt.axis('off')
plt.show()

更多推荐
所有评论(0)