def plot_cols(data,xlabel=None,ylabel=None,path_file=None,marker=True,len_xticks=10,save=False):
""
"
:param data:DataFrame,数据表格--行标题为横坐标,列标题为数据列
Series,序列——行标题为横坐标,name为数据列
:param xlabel: str,横坐标名称
:param ylabel: str,纵坐标名称
:param path_file: str,保存文件路径
:param marker: bool,是否为每条线添加不同的标记
:param len_xticks:int,横坐标显示的值个数
:param save: bool,是否保存图片
example:
data=pd.DataFrame(np.random.random((100,3)),index=np.arange(100),columns=[
'a'
,
'b'
,
'c'
])
plot_cols(data,xlabel=
'指标'
,ylabel=
'指数'
)
""
"
data.index=data.index.astype(str)
plt.figure(figsize=(12,8))
markers=[
'.'
,
','
,
'o'
,
'v'
,
'^'
,
'<'
,
'>'
,
'1'
,
'2'
,
'3'
,
'4'
,
's'
,
'p'
,
'*'
,
'h'
,
'H'
,
'+'
,
'x'
,
'D'
,
'd'
,
'|'
,
'_'
]#标记符号
#如果是DataFrame表格形式,则画出多列;如果是Series,则画出单列
if
type(data) is pd.core.frame.DataFrame:
#是否为每条线添加不同的符号
if
marker==False:
for
col in data.columns:
plt.plot(data[col],marker=
'o'
,label=col)
else
:
for
col,marker_ in zip(data.columns,markers):
plt.plot(data[col], marker=marker_, label=col)
elif type(data) is pd.core.series.Series:
plt.plot(data, marker=
'o'
, label=data.name)
plt.legend(loc=
'best'
,fontsize=
'small'
)
xticks=np.linspace(0,len(data),(len_xticks+1)).astype(int).tolist()[:-1]#被显示的横坐标刻度值的位置
plt.xticks(data.index[xticks],rotation=270)
plt.ylabel(ylabel,fontsize=15)
plt.xlabel(xlabel,fontsize=15)
plt.grid(True,alpha=0.2)
if
save==True:plt.savefig(path_file)
if
__name__==
'__main__'
:
x=np.arange(1,101)
data = pd.DataFrame({
'a'
:x*2+3,
'b'
:x*3-4,
'c'
:np.log(x)+9}, index=np.arange(100))
plot_cols(data, xlabel=
'指标'
, ylabel=
'指数'
)