Matplotlib模块的基本使用

 

一、折线绘图

import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv("F:\\ml\\机器学习\\01\\1.csv")

print(data)
         date  values
0  2012/11/15      90
1    2013/4/5      34
2    2014/2/3      34
3    2015/8/9      35
4    2016/6/2      72
5    2016/7/9      62

data['date'] = pd.to_datetime(data['date']) #将日期转化为以-的格式,方便阅读

print(data)
        date  values
0 2012-11-15      90
1 2013-04-05      34
2 2014-02-03      34
3 2015-08-09      35
4 2016-06-02      72
5 2016-07-09      62

#以下将以图形式表现出来
plt.figure()#以这个开始,创建figure的一个对象

plt.plot(data['date'], data['values']) #plot()的里面的参数,第一个为横轴,第二个参数为纵轴画图

plt.show() #显示图

 

#但是上面的图中横坐标很不清楚,改变其显示方式,以及加上标题。
plt.figure()#以这个开始,创建figure的一个对象

plt.plot(data['date'], data['values']) #plot()的里面的参数,第一个为横轴,第二个参数为纵轴画图

plt.xticks(rotation = 45) #将横坐标的斜向45°显示

plt.xlabel('date') #给横轴一个标签

plt.ylabel('values') #给纵轴一个标签

plt.title('working-trend with years') #给整个图一个题目

plt.show() #显示图

 

 

二、子图的操作

import matplotlib.pyplot as plt

fig = plt.figure() #以这个开始,创建figure的一个对象

ax1 = fig.add_subplot(2, 2, 1) #建立子图,add_subplot中的参数2,2表示建立2*2的四个子图,最后一个参数1表示四个子图中的第一个。

ax3 = fig.add_subplot(2, 2, 3) #最后一个参数3表示四个子图中的第三个

ax4 = fig.add_subplot(2, 2, 4) #最后一个参数4表示四个子图中的第四个
 
plt.show()

 

 

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure(figsize = (3, 3)) #figsize指定大小,第一个参数表示长度,第二个参数表示宽度

ax1 = fig.add_subplot(2, 2, 1)

ax4 = fig.add_subplot(2, 2, 4)

ax1.plot(np.arange(10), np.arange(10)) #画出子图ax1所需要的图

ax4.plot(np.random.random(10), np.arange(10)) #画出子图ax4所需要的图

plt.show()

#如果我想要在一个图上画几条线呢

x = np.linspace(-1, 1, 10) #使用np.linspace定义x:范围是(-1,1);个数是10. 仿真一维数据组(x ,y)表示曲线1.

y1 = 2*x

y2 = x**2

plt.figure(figsize = (4, 3)) #figsize指定大小,第一个参数表示长度,第二个参数表示宽度

plt.plot(x, y1, color = 'red', linewidth = 1.0, linestyle = '--', label="y1") #其中label是标注,但想要标注后在图中显示,用legend的表示

plt.plot(x, y2, color = 'blue', linewidth = 1.0, linestyle = '-', label = 'y2')

plt.xlabel('x')

plt.ylabel('y')

plt.legend(loc = 'best') #best表示最好的显示方式,还有其他指定的方式

plt.show()

其中’loc’参数有多种,’best’表示自动分配最佳位置,其余的如下:

 'best' : 0,          
 'upper right'  : 1,
 'upper left'   : 2,
 'lower left'   : 3,
 'lower right'  : 4,
 'right'        : 5,
 'center left'  : 6,
 'center right' : 7,
 'lower center' : 8,
 'upper center' : 9,
 'center'       : 10,


三、条形图与散点图
#条形图的绘制
import matplotlib.pyplot as plt
import numpy as np

n = 12

X = np.arange(n)

Y1 = (1-X/float(n))*np.random.uniform(0.5, 1.0, n) #Y是相应的均匀分布的随机数据

Y2 = (1-X/float(n)*np.random.uniform(0.5, 1.0, n))

plt.figure(figsize = (8, 6))

plt.bar(X, +Y1, facecolor = '#9999ff', edgecolor = 'white') #facecolor表示主体颜色,具体的其他颜色表示可以百度,edgecolor表示边框颜色

plt.bar(X, -Y2, facecolor = '#ff9999', edgecolor = 'white')

plt.xlim(-0.5, n)

plt.ylim(-1.25, 1.25)

plt.xticks(())

plt.yticks(())

#在条形图上标注值
for x, y in zip(X, Y1): #zip的意思就是可以将每个数值分别赋值
    plt.text(x+0.1, y+0.05, '%.2f' % y, ha = 'center', va = 'bottom') #x+0.4向右偏移0.4, y+0.05向上偏0.05, '%.2f' % y的意思是y保留两位小数。

for x, y in zip(X, Y2):
    plt.text(x+0.1, -y-0.05, '%.2f' % y, ha = 'center', va = 'top') #ha = 'center'的意思是横向居中对齐,va = 'top'的意思是纵向顶部对齐 
    
plt.show()

 

#散点图的绘制

import matplotlib.pyplot as plt
import numpy as np

n = 1024

#生成1024个呈标准正态分布的二维数据组 (平均数是0,方差为1) 作为一个数据集
X = np.random.normal(0 , 1, n) #每个点的x值

Y = np.random.normal(0, 1, n) #每个点的y值

T = np.arctan2(Y, X) #这个是颜色的显示值

plt.scatter(X, Y, s = 100, c = T, alpha = 0.5) #s表示size, c表示color, alpha表示透明度

plt.xlim(-1.5, 1.5) #x轴的限制

plt.ylim(-1.5, 1.5) #y轴的限制

plt.xticks(()) #消除x轴的标注

plt.yticks(()) #消除y轴的标注

plt.show()

 

四、柱形图

#柱形图
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

norm_reviews = pd.read_csv("F:\\ml\\机器学习\\01\\2.csv")

fig, ax = plt.subplots()

ax.hist(norm_reviews['Fandango_Ratingvalue'], bins = 20) #bins进行均匀的分布,默认是10


plt.show()

 

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

norm_reviews = pd.read_csv("F:\\ml\\机器学习\\01\\2.csv")

fig, ax = plt.subplots()

ax.hist(norm_reviews['Fandango_Ratingvalue'], range = (4, 5), bins = 20) #只显示4-5区间,总的还是20条,只是在4-5之间是8条

plt.show()

posted @ 2019-08-21 23:06  落叶心声  阅读(541)  评论(0编辑  收藏  举报

Contact with me