https://www.cnblogs.com/frchen/p/5749559.html
python的matlibplot绘图常用参数设置:转自http://www.cnblogs.com/hzc2012/p/8377478.html
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from scipy.interpolate import spline
x = np.arange(-5,11)
y = x**3 + 2*(x**2) + x + 2
y2 = 2*(x**3) + 2*(x**2) + x + 1
plt.figure(figsize=(10,6),facecolor='#ffffcc',edgecolor='#ffffcc') #绘图框的大小、颜色(放最前)
plt.subplot(111, facecolor='#e6e6e6')#绘图区,背景色(放在figure之后,绘图函数之前)
#绘图
plt.plot(x, y, color='red', linewidth=1, linestyle='--') #绘折现图
doc = plt.scatter(x, y2, color='green',label="绘点标签") #绘点图
#绘平滑曲线,将x轴上的点划分更多段来绘图
x_smooth = np.linspace(x.min(), x.max(), x.max()*1000)
y_smooth = spline(x, y2, x_smooth)
plt.plot(x_smooth, y_smooth, color='blue', linewidth=1,label="平滑线标签")
#其他设置
plt.grid(axis='y',color='#8f8f8f',linestyle='--', linewidth=1 ) #显示网格(如显示y轴的)
plt.xlim([-10,15]) #指X轴的显示范围
plt.ylim([-100,3000]) #指Y轴的显示范围
plt.title('标题', color='blue')
plt.xlabel('x 轴标签', color='blue')
plt.ylabel('y 轴标签', color='blue')
plt.text((x.max()+x.min())/2,(y2.max()+y2.min())/2,'show text',ha='center')#图像上显示文本信息
for a,b in zip(x, y2): plt.text(a, b, str(b)) #plt.text 显示y值
plt.legend(loc=2)#图像标签说明,设置label的都显示(loc=2位于第二个角洛)
#plt.legend(handles=[doc], loc=2) #只显示一个图的标签
#plt.xticks((-4,-2,0,2,4,6,8,10),(-4,-2,0,2,4,6,8,10))#替换x轴刻度值
plt.yticks((0,500,1000,1500,2000),('0','0.5k','1k','1.5k','2k'))#替换y轴刻度值
plt.axis('tight') #tight:坐标轴数据显示更明细(有不同选项)
plt.show() #显示图像
Seaborn中的箱型图的具体实现方法:可参看官方文档链接:http://seaborn.pydata.org/generated/seaborn.boxplot.html#seaborn.boxplot
seaborn.boxplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, width=0.8, dodge=True, fliersize=5, linewidth=None, whis=1.5, notch=False, ax=None, **kwargs)
绘制方框图以显示与类别相关的分布。
箱形图(或盒须图)以一种有助于比较变量或跨分类变量水平的方式显示定量数据的分布。该框显示数据集的四分位数,而晶须延伸以显示分布的其余部分,除了使用作为四分位数范围的函数的方法确定为“异常值”的点。
输入数据可以以多种格式传递,包括:
- 表示为列表,numpy的阵列,或直接传递到大熊猫Series对象数据的向量
x
,y
和/或hue
参数。 - “长表”数据帧,在这种情况下
x
,y
和hue
变量将决定数据是如何绘制。 - “宽格式”DataFrame,用于绘制每个数字列。
- 一个数组或向量列表。
在大多数情况下,可以使用numpy或Python对象,但最好使用pandas对象,因为关联的名称将用于注释轴。此外,您可以使用分类类型来分组变量来控制绘图元素的顺序。
此函数始终将其中一个变量视为分类,并在相关轴上的序数位置(0,1,... n)处绘制数据,即使数据具有数字或日期类型也是如此。
参数: | x,y,hue:
data:DataFrame,数组或数组列表,可选
order,hue_order:字符串列表,可选(order, hue_order (lists of strings):用于控制条形图的顺序)
orient:“v”| “h”,可选(orient:"v"|"h" 用于控制图像使水平还是竖直显示(这通常是从输入变量的dtype推断出来的,此参数一般当不传入x、y,只传入data的时候使用))
color:matplotlib颜色,可选
palette:调色板名称,列表或字典,optional(调色板,控制图像的色调)
saturation:饱和度,float,optional
width:float,optional(width:float,控制箱型图的宽度)
dodge:布尔,optional
fliersize:float,optional(fliersize:float,用于指示离群值观察的标记大小)
linewidth:float,optional
whis:float,optional(whis:确定离群值的上下界(IQR超过低和高四分位数的比例),此范围之外的点将被识别为异常值。IQR指的是上下四分位的差值。)
notch:布尔值,optional
ax:matplotlib轴,optional
kwargs:关键,价值映射
|
---|
Examples
绘制一个水平箱图:
>>> import seaborn as sns
>>> sns.set(style="whitegrid")
>>> tips = sns.load_dataset("tips")
>>> ax = sns.boxplot(x=tips["total_bill"])
绘制一个按分类变量分组的垂直箱图:
>>> ax = sns.boxplot(x="day", y="total_bill", data=tips)
使用两个分类变量绘制具有嵌套分组的箱线图:
>>> ax = sns.boxplot(x="day", y="total_bill", hue="smoker",
... data=tips, palette="Set3")
当某些箱子为空时,绘制带有嵌套分组的箱线图:
>>> ax = sns.boxplot(x="day", y="total_bill", hue="time",
... data=tips, linewidth=2.5)
通过传递显式顺序控制框顺序:
>>> ax = sns.boxplot(x="time", y="tip", data=tips,
... order=["Dinner", "Lunch"])
为DataFrame中的每个数字变量绘制一个boxplot:
>>> iris = sns.load_dataset("iris")
>>> ax = sns.boxplot(data=iris, orient="h", palette="Set2")
Use hue
without changing box position or width:
>>> tips["weekend"] = tips["day"].isin(["Sat", "Sun"])
>>> ax = sns.boxplot(x="day", y="total_bill", hue="weekend",
... data=tips, dodge=False)
Use swarmplot()
to show the datapoints on top of the boxes(用swarmplot()
在框顶部显示数据点)::
>>> ax = sns.boxplot(x="day", y="total_bill", data=tips)
>>> ax = sns.swarmplot(x="day", y="total_bill", data=tips, color=".25")
Use catplot()
to combine a pointplot()
and a FacetGrid
. This allows grouping within additional categorical variables. Using catplot()
is safer than using FacetGrid
directly, as it ensures synchronization of variable order across facets(使用catplot()
结合一pointplot()
和 FacetGrid
。这允许在其他分类变量中进行分组。使用catplot()
比FacetGrid
直接使用更安全,因为它确保跨方面的变量顺序同步:):
>>> g = sns.catplot(x="sex", y="total_bill",
... hue="smoker", col="time",
... data=tips, kind="box",
... height=4, aspect=.7);
也可参看一下链接:https://www.jianshu.com/p/96977b9869ac