当我开始研究seaborn时我惊呆了, seaborn之于matplotlib,相当于pandas之于numpy呀。真是强又简洁,终于不用幸苦修改参数,图画得要更漂亮了,能用一句话搞定的,python绝不说多句。下面用我绘的一个图作例子,matplotlib绘图用了30行, seaborn用了9行。
原数据:2007年1月至2018年12月的平均颗粒物数据
matplotlib绘图(箱型图)
import pandas as pd
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"C:\\WINDOWS\\Fonts\\simsun.ttc", size=14)
import numpy as np
data=pd.read_csv('M:\\data\\PM历年月平均值.csv',index_col=0,encoding='gbk')
#月分类
month=tuple((i for i in range(1,13)))
#建设年为索引,月为列的dataframe
dfM=pd.DataFrame(columns=month)
dfm=pd.DataFrame(columns=month)
#对元素赋值
for i in month:
temx='0'+str(i) if i<10 else str(i)
temdata=data[data['time'].apply(lambda x:str(x)[-2:]).str.contains(temx)]
dfM[i]=temdata['PM2.5'].values
#更改索引名
color = dict(boxes='DarkGreen',whiskers='DarkOrange',medians='DarkBlue',caps='Gray')
dfM.plot.box(ylim = [0,100],
grid = True,
color = color,
)
plt.xlabel('月份',FontProperties=font)
plt.ylabel('质量浓度(μg/$\mathregular{m^3}$)',FontProperties=font)
plt.title('PM$_{2.5}$')
plt.show()
senborn绘图(箱型图)
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np
import seaborn as sns
sns.set(font='SimHei')
data=pd.read_csv('M:\\data\\PM历年月平均值.csv',index_col=0,encoding='gbk')
data['月份']=data['time'].apply(lambda x:str(x)[-2:])
sns.boxplot(x=data['月份'],y=data['PM2.5'],data=data, palette='PRGn')
plt.show()