#导入库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
#导入一个文件
iris = pd.read_csv('../homework/iris.csv')
iris.head()
#需求:画一个花瓣(petal)和花萼(sepal)长度的散点图,并且点的颜色要区分鸢尾花的种类
iris.Name.unique()
'''
得到
array(['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'], dtype=object)
'''
#形成一个字典,根据种类区分颜色
color_map = dict(zip(iris.Name.unique(), ['blue','green','red']))
#for循环groupby方法
for species, group in iris.groupby('Name'):
plt.scatter(group['PetalLength'], group['SepalLength'],
color=color_map[species],
alpha=0.3, edgecolor=None,
label=species)
plt.legend(frameon=True, title='Name')
plt.xlabel('petalLength')
plt.ylabel('sepalLength')
#Seaborn方法
sns.lmplot('PetalLength', 'SepalLength', iris, hue='Name', fit_reg=False)
#导入库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas import Series, DataFrame
%matplotlib inline
#导入seaborn模块
import seaborn as sns
#生成Series
s1 = Series(np.random.randn(1000))
#直方图,使用Matplotlib plot
plt.hist(s1)
#密度图,使用Matplotlib plot
s1.plot(kind='kde')
#直方图使用seaborn,distplot参数定义Series名,bins多少块默认10,hust是否直方图默认true,kde是否密度图默认true, rug默认False代表数据密度(小竖线)
sns.distplot(s1, bins=20, hist=True, kde=False, rug=True)
#密度图第二种方法,kdeplot参数定义Series名,shade是否填充默认False,color颜色填充
sns.kdeplot(s1, shade=True, color='r')
#直方图方法sns.plt.hist,类似调用Matplotlib plot
sns.plt.hist(s1)
#小竖线的绘制,rugplot参数定义Series名,height代表小竖线高度
sns.rugplot(s1, height=0.5)
#导入库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from pandas import Series, DataFrame
#直接显示图
%matplotlib inline
#导入一个DataFrame,在线下载实验数据
df = sns.load_dataset('flights')
df.head()
df.shape
'''
得到
(144, 3)
'''
#重新布局pivot生成透视表
df = df.pivot(index='month', columns='year', values='passengers')
#热力图,只传入数据
sns.heatmap(df)
#线型图对比
df.plot()
#热力图其它参数,参数annot代表是否显示数据,fmt数据'd'显示整数数字
sns.heatmap(df, annot=True, fmt='d')
#求和
s = df.sum()
s.index
'''
得到
Int64Index([1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959,
1960],
dtype='int64', name='year')
'''
s.values
'''
得到
array([1520, 1676, 2042, 2364, 2700, 2867, 3408, 3939, 4421, 4572, 5140,
5714])
'''
#柱状图绘制
sns.barplot(x=s.index, y=s.values)
type(s)
'''
得到
pandas.core.series.Series
'''
#使用Matplotlib plot的情况
s.plot(kind='bar')
#导入库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
1. axes_style and set_style
#直接显示图
%matplotlib inline
#生成曲线0-14大小的数字100等分
x = np.linspace(0,14,100)
#曲线求值
y1 = np.sin(x)
y2 = np.sin(x+2)*1.25
#画两条曲线,使用Matplotlib plot
def sinplot():
plt.plot(x, y1)
plt.plot(x, y2)
sinplot()
#导入seaborn
import seaborn as sns
#在seaborn之后的图
sinplot()
#设置效果时,五种默认主题展示:
style = ['darkgrid', 'dark', 'white','whitegrid', 'tricks']
#darkgrid网格后,设置线参数为红色
sns.set_style(style[0], {'grid.color': 'red'})
sinplot()
#darkgrid内含主题情况展示,内部数据可以更改
sns.axes_style()
'''
得到
{'axes.axisbelow': True,
'axes.edgecolor': 'white',
'axes.facecolor': '#EAEAF2',
'axes.grid': True,
'axes.labelcolor': '.15',
'axes.linewidth': 0.0,
'figure.facecolor': 'white',
'font.family': ['sans-serif'],
'font.sans-serif': ['Arial',
'Liberation Sans',
'Bitstream Vera Sans',
'sans-serif'],
'grid.color': 'red',
'grid.linestyle': '-',
'image.cmap': 'Greys',
'legend.frameon': False,
'legend.numpoints': 1,
'legend.scatterpoints': 1,
'lines.solid_capstyle': 'round',
'text.color': '.15',
'xtick.color': '.15',
'xtick.direction': 'out',
'xtick.major.size': 0.0,
'xtick.minor.size': 0.0,
'ytick.color': '.15',
'ytick.direction': 'out',
'ytick.major.size': 0.0,
'ytick.minor.size': 0.0}
'''
#重新显示,清空设置
sns.set()
sinplot()
#white主题
sns.set_style('white')
sinplot()
#重新显示,清空设置,恢复深灰主题
sns.set()
sinplot()
#context的默认情况展示
context = ['paper', 'notebook', 'talk', 'poster']
#设置rc={'grid.linewidth': 3.0}设置粗细
sns.set_context(context[1], rc={'grid.linewidth': 3.0})
sinplot()
#重新显示,清空设置
sns.set()
#显示数据
sns.plotting_context()
得到
{‘axes.labelsize’: 11.0,
‘axes.titlesize’: 12.0,
‘figure.figsize’: [8.0, 5.5],
‘font.size’: 12.0,
‘grid.linewidth’: 1.0,
‘legend.fontsize’: 10.0,
‘lines.linewidth’: 1.75,
‘lines.markeredgewidth’: 0.0,
‘lines.markersize’: 7.0,
‘patch.linewidth’: 0.3,
‘xtick.labelsize’: 10.0,
‘xtick.major.pad’: 7.0,
‘xtick.major.width’: 1.0,
‘xtick.minor.width’: 0.5,
‘ytick.labelsize’: 10.0,
‘ytick.major.pad’: 7.0,
‘ytick.major.width’: 1.0,
‘ytick.minor.width’: 0.5}
#导入库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#直接显示图
%matplotlib inline
#准备一个图像
def sinplot():
x = np.linspace(0,14,100)
plt.figure(figsize=(8,6))
for i in range(4):
plt.plot(x, np.sin(x+i)*(i+0.75), label='sin(x+%s)*(%s+0.75)'% (i,i))
plt.legend()
#线形图,使用Matplotlib plot
sinplot()
#导入seaborn
import seaborn as sns
#线形图,使用seaborn以后
sinplot()
#调色板,当前系统的调色板6个元组3个值,分类色板
sns.color_palette() #RGB
'''
得到
[(0.29803921568627451, 0.44705882352941179, 0.69019607843137254),
(0.33333333333333331, 0.6588235294117647, 0.40784313725490196),
(0.7686274509803922, 0.30588235294117649, 0.32156862745098042),
(0.50588235294117645, 0.44705882352941179, 0.69803921568627447),
(0.80000000000000004, 0.72549019607843135, 0.45490196078431372),
(0.39215686274509803, 0.70980392156862748, 0.80392156862745101)]
'''
#画出色板
sns.palplot(sns.color_palette())
#系统定义的pal_style六种色板
pal_style = ['deep', 'muted', 'pastel', 'bright', 'dark','colorblind']
#绘制某种色板
sns.palplot(sns.color_palette('dark'))
#设置色板,默认为deep
sns.set_palette(sns.color_palette('dark'))
sinplot()
#重新显示,清空设置
sns.set()
sinplot()
#定义色板,临时更改with语句
with sns.color_palette('dark'):
sinplot()
#在with语句以外恢复原来情况
sinplot()
#自定义色板颜色,三个值的元组是一个RGB颜色
pal1 = sns.color_palette([(0.5,0.1,0.7),(0.3,0.1,0.9)])
#绘制色板
sns.palplot(pal1)
#色板颜色数量调节'hls', 8,调节为8个颜色
sns.palplot(sns.color_palette('hls', 8))