今天这篇要进入matplotlib的详细概念介绍
这篇文章会分成两大部分
因为图表的绘制本来就会根据不同的需求而调整
平常上网查到或是老师教的都是用numpy跑出x, y分别的list丢进去函数
但是在真实场景中,多半是用到dataframe的情况
所以我决定在这篇里先把概念跟常用的参数列出来
就像是先学会使用工具
之後才能针对想要的绘图方式根据参数调整
要特别注意放进去plotting fuction里的资料型态
根据matplolib官网上的说明
All of plotting functions expect numpy.array
or numpy.ma.masked_array
as input. Classes that are 'array-like' such as pandas
data objects and numpy.matrix
may or may not work as intended. It is best to convert these to numpy.array
objects prior to plotting.
所以我们要特别注意放进去的资料型态是否符合numpy的array型态
虽然pandas的物件或是numpy方阵的格式有时候是可行的
但是转换成numpy.array
是最为保险的
pandas.Dataframe
要使用.values
来转换成numpy的array
永远要注意在使用前要引入需要使用到的套件
import pandas as pd
import matplotlib.pyplot as plt
a = pd.DataFrame(np.random.rand(3, 5), columns = list('abcde'))
a_asarray = a.values
print(a)
print(type(a))
可以看到a原本的样子
还有他的型态是以DataFrame出现
接下来看看使用.values
转换後的样子还有资料型态
print(a_asarray)
print(type(a_asarray))
可以看到资料的型态成功被转换成适用的numpy.ndarray
numpy.matrix
可以使用np.asarray( )
转换
创造一个名为b的matrix
b = np.matrix([[1, 2], [3, 4]])
print(b)
print(type(b))
再经由np.asarray(b)
b_asarray = np.asarray(b)
print(b_asarray)
print(type(b_asarray))
可以看到资料的型态成功被转换成适用的numpy.ndarray
这里延续前面pandas练习过的资料库
从kaggle上找到的关於学生成绩的纪录
先引入所有要使用到的套件pandas
, numpy
,matplotlib
把这笔资料列印部分出来
看看资料的架构长怎样
import pandas as pd
import matplotlib.pyplot as plt
import numpy as![](http://) np
df = pd.read_csv("StudentsPerformance.csv")
df.head()
若是现在想要分析将race/ethnicity
分组过後的各科成绩中位数
先来看看分组後的资料跟他的资料型态
race_ethnicity = df.groupby("race/ethnicity").mean()
print(race_ethnicity)
print(type(race_ethnicity))
可以看到分组过後会显示从group A到group E各组在各科的平均数
若是现在想画出各组在数学成绩的长条图
首先先撷取出各组的数学成绩
math = race_ethnicity["math score"]
math
画出长条图有两种方法
plt.bar(x,y)
下面是官方对於括号内参数的使用教学
先画一个直的长条图
plt.bar(math.index, math)
若是想要画出横的,只需要将bar改成barh
plt.barh(math.index, math)
df.plot()
在括号里面记得要指定样式kind="bar"
这个可以套用在所有想要的绘图类型
後面会针对参数做介绍
math.plot(kind="bar")
math.plot(kind="barh")
想要转成横的也只需要将参数改成"barh"
因为基本上绘图只需要改变样式的参数
所以先画出长条图之後
可以利用df.plot( )
来介绍括号里会出现的参数
之後就可以藉由改变参数来选择想要的图表类型跟改变图表的呈现
先来看看df.plot( )函数的使用方式,下面这些只是部分
如果要完整的可以上官网查询
DataFrame.plot(x=None, y=None, kind='line', ax=None, subplots=False,
sharex=None, sharey=False, layout=None, figsize=None,
use_index=True, title=None, grid=None, legend=True,
style=None,xticks=None, yticks=None, xlim=None, ylim=None, rot=None,
fontsize=None, **kwds)
以下资料来源是从Pandas的官网取得
会选几个常用的参数介绍
pandas.DataFrame.plot - pandas 1.3.2 documentation
data: Series or DataFrame
放入的资料种类,可以是 Series或是DataFrame
x: label or position, default None
资料的标签或是栏位名称,只会用在资料是dataframe的时候
y: label, position or list of label, positions, default None
kind: str
**图表的类型
• ‘line’ : 折线图
• ‘bar’ : 垂直的长条图
• ‘barh’ : 水平的长条图
• ‘hist’ : 直方图
• ‘box’ : 盒须图
• ‘density’ : 密度图
• ‘pie’ : 圆饼图
• ‘scatter’ : 散布图 (只能用在DataFrame)
ax: matplotlib axes object, default None
是否有指定要画在哪个子图上,没有的话就会由内建产生
subplots: boolean, default False
是否要对不同的列分别画出子图,default的设定是None
sharex: bool, default True if ax is None else False
有子图的话是否要共用x轴(default是True)
sharey: bool, default False
有子图的话是否要共用y轴
layout: tuple, optional
放入tuple(rows,colums),设计子图的摆放阵列
figsize: a tuple (width, height) in inches
放入tuple(width, height)指定画布的大小
use_index: bool, default True
是否有要指定x轴上的index,如果没有的话default就是自动用dataframe的索引当成标签
title: str or list
图表名称
grid: bool, default None (matlab style default)
是否要在表格上出现格线
legend: bool or {‘reverse’}
是否要出现图例
style:list or dict
线要呈现的样式
xlabel: label, optional
x轴的名称,default是设定使用index或是column的名称
ylabel: label, optional
y轴的名称,default是不会出现
color: str or list
指定想要的颜色
这篇介绍了很多基础概念
主要常见的是这几种类型
但是还有许许多多会根据不同的应用场景而有不同的需求
像是如果x轴的值如果太大是否要取log
或是想要调整部分的字体大小怎麽办
所以还是要乖乖学会如何自己在网路上找资源
<<: DAY23-EXCEL统计分析:双因子变异数分析实例
接续昨天我们要决定使用哪一个前端框架 最後我选择使用vuetify 使用前端框架的用意是让我们的网站...
Git在干嘛 随着系统架构越来越复杂,一个专案开始会有多人合作的情况越来越多,档案管理的需求也日渐浮...
环境 Windows 10 19043 System Monitor v13.01 前情提要 在【D...
人的科技文明发展始终来自於人性 随着科技的一路发展,人类的文明与科技水准一路向上的平稳,再发展的过程...
今天要介绍的是Vuex 先来说说我们在什麽时候会比较需要用使用到Vuex呢?如果在做比较大型的专案时...