使用matplotlib做数据可视化图表

matplotlib的作用

使用matplotlib库可以绘制折线图、散点图、条形图、直方图将数据进行可视化,更直观地呈现数据,使数据更加客观更具说服力。

再清楚一下绘图思路:先绘制草图再逐步设置完善图。

导入库

在命令执行窗口输入 pip install matplotlib 进行库的导入。

简单绘制

首先进行简单绘制,我们需要从matplotlib库中导入pyplot模块,并进行简化命名

以下以绘制折线图为例,散点图和条形图的使用近似,主要区别在于散点图使用plt.scatter(),条形图使用plt.bar(),直方图使用plt.hist() (直方图一般是对没有进行统计过的数据才能使用)

from matplotlib import pyplot as plt
plt.plot()     #图形绘制
plt.show()     #图形展示

细节完善

设置图片大小

fig = plt.figure(figsize=(20,8),dpi=80)
#通过实例化一个figure并且传递参数,能够在后台自动使用该figure实例
#在图像模糊是可以传入dpi参数,让图片更加清晰
plt.savefig(“./sig_size.png”)#保存在当前路径下并命名为sig_size.png

设置x轴和y轴的刻度

x轴和y轴刻度的设置有多种方法:

plt.xticks(x)#直接传入x的数值

plt.xticks(range(2,25))#传入2-24

_xtick_labels = [i for i in range(2,25)]
plt.xticks(_xtick_labels)


#如果刻度太过密集则可以改变步长,间隔取值
plt.xticks(x[::2]) 


#同样也可以设置y轴的刻度
plt.yticks(range (min(y),max(y)+1))

绘制网格

对绘制的图我们还可以添加网格线,对alpha参数进行赋值可以设置网格线透明度。

plt.grid(alpha=0.4)  #alpha设置网格线透明度

解决中文显示问题

为了图像便于人们阅读,我们绘图时还需要加入中文,但matplotlib在默认的情况下中文是无法显示的。此时我们就需要找到源码(matplotlib.rc选中在ctrl+B)并进行修改,也有多种方法。

我们可以通过fc-list :lang=zh查看linux/mac下面支持的字体(注意冒号前有空格)

#方法1:查看源码直接复制font并进行修改,此方法在每次绘图前就要修改好

'''
font = {'family' : 'monospace',
                   'weight' : 'bold',
                   'size'   : 'larger'}
'''
#以上是原始代码
#修改过后的:
font = {'family': 'MicroSoft YaHei',
        'weight': 'bold',
        'size': '12'}  #注意字体大小需要使用数字来设置
matplotlib.rc("font",**font)
#或者直接传入到rc中
matplotlib.rc("font",family='MicroSoft YaHei',weight='bold',size='12')

#方法2 
from matplotlib import font_manager
My_font = font_manager.FontProperties(fname=”字体文件路径”)
##win字体路径:fname=“\Windows\Fonts\msyh.ttc”(具体名称属性里找)

#方法3
plt.rcParams[“font.sans-serif”]=[“SiHei”]

添加描述信息(若中文显示使用方法2需要传入中文字体)

plt.xlabel(“xxx”)   #添加x轴的描述信息
plt.ylabel(“xxx”)   #添加y轴的描述信息
plt.title(“xxx”)    #添加标题

添加图例

当我们需要在同一个图中绘制两条及以上的折线时,我们需要对折线进行修饰以区分这两条线

plt.plot(x,y,label=”xx”,color=’r’,linestyle=’--’,linewidth=5)  
#传入x,y使其对应起来,命名为xx,设置为宽度为5的红色虚线
plt.legend()  #添加图例
#还可以改变图例的位置
plt.legend(loc=0)   #图例置于最佳位置
plt.legend(loc=upper left)  #将图例置于左上角

如果要改变图例位置则需要查看源码并修改,点击legend,可以看到legend字样高亮,ctrl+B一次后再次找到legend再ctrl+B找到图片所示的legend,然后找到location就可以找到想要的位置的字符串表达或者代码,传入plt.legend()就可以了。

 对折线的个性化设置

颜色字符r       gbwcmy

k

颜色

红色

绿色蓝色白色青色洋红黄色黑色

还可以百度颜色的16进制

字符----,‘’
样式实线

虚线,破折线

点划线点虚线,虚线留空或空格,无线条

以下就是以绘制折线图为例进行一个完整的代码实现

from matplotlib import pyplot as plt
import matplotlib
font = {'family': 'MicroSoft YaHei',
        'weight': 'bold',
        'size': '12'}
matplotlib.rc("font",**font)

y_1 = [1,1,1,1,2,0,1,2,3,2,4,1,4,2,4,3,3,1,1,1]
y_2 = [1,0,3,1,2,2,1,0,2,1,2,1,1,3,2,1,1,3,1,1]
x = range(11,31)
plt.figure(figsize=(13,6),dpi=80)
plt.plot(x,y_1,label="自己",color='r',linewidth=3,linestyle='--')
plt.plot(x,y_2,label="同桌",color='g',linewidth=3,linestyle='-')
_xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x,_xtick_labels)
plt.xlabel("年龄/岁")
plt.ylabel("一年看的课外书的数量/本")
plt.title("不同年龄段看的课外书的数量")
plt.grid(alpha=0.4)
plt.legend()
plt.savefig("./shu.png")
plt.show()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值