matplotlib常用技巧

1、plot显示中文

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['font.family']='sans-serif'

2、画柱状图:

import matplotlib.pyplot as plt
plt.bar(np.arange(5),np.arange(5),width=0.8, facecolor='yellowgreen',
        edgecolor='k')
plt.grid(True, linestyle='--',color='gray',linewidth=0.5,axis='y')
plt.title('test')
y1 = [0,1,2,3,4]
for i,j in zip(range(5), y1):    # 给图中添加标注
    plt.text(i,1,j,color='k',fontsize=9)
plt.show()  

3、画散点图

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['font.family']='sans-serif'
x0=np.arange(10)
y0=np.arange(10)
plt.scatter(x0,y0,s='#可以填入数据表示点的大小#',marker='.',alpha=0.9,c='r',label='test点')    # c=squeeze(label),其中label=[0,1,2,0,1,2,0,1,2,0],不同的类别有不同的颜色
plt.axvline(5,hold=None,label='x轴均线:5',c='r',linestyle='--',alpha=0.35)    # 绘制x轴参考线
plt.axhline(5,hold=None,label='y轴均线:5',c='g',linestyle='--',alpha=0.35)
plt.legend(loc='upper left')
plt.grid()
for i,j,n in zip(x0,y0,['a','b','c','d','e','f','g','h','i','j']):
    plt.text(i+0.1,j,n,color='k')
plt.show()

详细参数参考网址:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.scatter.html#matplotlib.pyplot.scatter(官方)、

https://blog.csdn.net/anneqiqi/article/details/64125186

4、绘制直方图和计数直方图:

a = [1,2,3,4,5,6,2,4,2]
plt.hist(a, bins=5, facecolor='blue', alpha=0.5)    # bins表示柱子的宽度,越小越宽
plt.grid(linestyle='--', color='gray', linewidth=0.5, axis='y', alpha=0.5)
plt.xlim([0,10])    # 设置横坐标显示的范围
plt.axvline(4, hold=None, label='x轴分隔线', c='r', linestyle='--', alpha=0.3)
plt.legend(loc='upper left')
plt.show()
# 画出的图是对a中出现的数进行计数,如1出现了1次,2出现了两次,出现几次柱子就有多高

 (2)用seaborn绘制计数直方图:

import matplotlib.pyplot as plt
import seaborn as sns

aaa = np.array([[1,25,11,1],[2,45,3,0],[3,60,0,0],
                [1,30,9,1],[2,50,6,0],[3,65,2,1]])    # 数据属于虚构
df = pd.DataFrame(aaa)
df.columns = ['class', 'age', 'education', 'y']
sns.countplot(x=df['y'],hue='class',data=df, palette='hls')    # hue是类别特征,可有可无
plt.show()

5、绘制箱型图(并在图中标出个分位数的值):

import matplotlib.pyplot as plt
df_score = [1, 2, 1, 2, 3, 4, 5, 1, 2, 3, 1, 4, 6, 8, 3]
import pandas as pd
df_score1 = pd.DataFrame(df_score)
score_info = df_score1.describe()
plt.boxplot(df_score, vert=False, meanline=True, showmeans=True, patch_artist=True)
# 提取分位数信息
df_score_info = [score_info[0]['min'], score_info[0]['25%'], score_info[0]['50%'], score_info[0]['75%'], score_info[0]['max']]
for i, j, n in zip(df_score_info, [1]*5, df_score_info):
    plt.text(i,j,n,color='b')
plt.show()

6、绘制堆叠图(用于类别型标签,可用于特征工程的类别型标签的筛选):

import pandas as pd
df = pd.DataFrame([[12,1],[12,1],[22,1],[22,1],[12,0],[12,0],[12,0],[22,0],[22,0]])
column_name = ['age', 'y']
df.columns = column_name
import seaborn as sns
sns.set(style='whitegrid', color_codes=True)
table = pd.crosstab(df.age, df.y)
table.div(table.sum(axis=1).astype(float),axis=0).plot(kind='bar', stacked=True)
import matplotlib.pyplot as plt
plt.title('age and y')
plt.xlabel('age')
plt.ylabel('y')
plt.show()

 7、绘制双纵坐标图

## 参考链接:https://blog.csdn.net/weixin_44208569/article/details/99052273
import matplotlib.pylab as plt # 导入绘图包
import matplotlib.pyplot as mp
import numpy as np

x_lambda=range(11) #x轴
# 左侧y轴:y1_recall
y1_recall=[0.746535121682016,0.7478350797262016,0.7495115054452305,0.7496154512070707,0.7498688766858469,0.7495455257754897  ,0.7495684090706842,0.7495684090706842,0.7495684090706842,0.7495684090706842,0.7495684090706842]
# 右侧y轴:y2_preceise
y2_preceise=[0.47455049019122314,0.4756946549509488,0.4762285985054871,0.4762667373308113,0.4764955702827563, 0.47645743145743213,0.4764955702827563,0.4764955702827563,0.4764955702827563,0.4764955702827563, 0.4764955702827563]
    	
mp.gcf().set_facecolor(np.ones(3) * 240/255)#设置背景色
fig, ax1 = plt.subplots() # 使用subplots()创建窗口
# 绘制折线图像1, 标签,线宽
ax1.plot(x_lambda, y1_recall, c='orangered', label='recall', linewidth = 1) 
mp.legend(loc=2)
ax2 = ax1.twinx() # 创建第二个坐标轴
ax2.plot(x_lambda, y2_preceise, c='blue', label='preceise', linewidth = 1) #同上, 'o-'
mp.legend(loc=4)
plt.grid(True)  # 样式风格:网格型
ax1.set_title("Double Y axis",size=22)  # 大标题
ax1.set_xlabel('lambda',size=18)  
ax1.set_ylabel('recall',size=18)
ax2.set_ylabel('preceise',size=18)
# mp.gcf().autofmt_xdate() # 自动适应刻度线密度,包括x轴,y轴
plt.show()

 

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值