python数据分析 - 各种图

官方文档:
https://matplotlib.org/gallery/index.html

https://plot.ly/python/

1.绘制了折线图(plt.plot)
2.设置了图片的大小(plt.figure)
3.实现了图片的保存(plt.savefig)
4.设置了xy轴上的刻度和字符串(xticks)
5.解决了刻度稀疏和密集的问题(xticks)
6.设置了标题,xy轴的lable(title,xlabel,ylabel)
7.设置了字体(font_manager. fontProperties)
8.在一个图上绘制多个图形(plt多次plot即可)
9.增加子画布,分开显示图像(plt.subplots)
10.为不同的图形添加图例

对比常用统计图

折线图:以折线的上升或下降来表示统计数量的增减变化的统计图
特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)

直方图:由一系列高度不等的纵向条纹或线段表示数据分布的情况。
一般用横轴表示数据范围,纵轴表示分布情况。
特点:绘制,连续性的数据展示一组或者多组数据的分布状况(统计)

条形图:排列在工作表的列或行中的数据可以绘制到条形图中。
特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计)

散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量
之间是否存在某种关联或总结坐标点的分布模式。
特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)

一 折线图

1.1

import matplotlib.pyplot as plt

#折线图:通过传入的数据,在二维坐标系下形成点,再将这些点连接成线
x = [1,5,4] #[x轴开始, x轴结束, x]
y = [5,8,6] #[y轴开始, y轴结束, y]
plt.plot(x,y) #三个节点[1, 5] [5, 8] [4, 6]
plt.show()

在这里插入图片描述

1.2

import matplotlib.pyplot as plt

#创建图像
#figsize:指定图的长宽
#dpi:图像的清晰度
#返回fig对象
plt.figure(figsize=(10,8),dpi=100)
x= range(2,25,2) #2到25,间距为2 (有时候显示并不会按照2进行分割)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
plt.plot(x,y)
plt.savefig("a.png") #存为图片
#设置x轴刻度
plt.xticks(x[::2])
#设置y轴刻度
plt.yticks(range(min(y),max(y)+1,2))
plt.show()

在这里插入图片描述

1.3

import matplotlib.pyplot as plt
import random
from matplotlib import font_manager

#字体管理器加载中文字体
my_font = font_manager.FontProperties(fname="simhei.ttf",size='larger')

plt.figure(figsize=(20,8),dpi=100)
x = range(120)
a = [random.randint(20,35) for i in range(120)]
plt.plot(x,a)

#实际的刻度数据:10点xx分
_xticks=["10点{}分".format(i) for i in x if i<60]
_xticks +=["11点{}分".format(i-60) for i in x if i>=60]
print(_xticks)
plt.xticks(x[::4],_xticks[::4],rotation=45,font_properties=my_font)
plt.show()

在这里插入图片描述

1.4

# -*- coding=UTF-8 -*-
import matplotlib.pyplot as plt
import random
from matplotlib import font_manager

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

plt.figure(figsize=(20,8),dpi=100)
x = range(120)
a = [random.randint(20,35) for i in range(120)]
plt.plot(x,a)

#实际的刻度数据:10点xx分
_xticks=["10点{}分".format(i) for i in x if i<60]
_xticks +=["11点{}分".format(i-60) for i in x if i>=60]
print(_xticks)
plt.xticks(x[::4],_xticks[::4],rotation=45)

#添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("温度随时间变化图示")

plt.show()

在这里插入图片描述

1.5

# -*- coding=UTF-8 -*-
import matplotlib.pyplot as plt
import random
from matplotlib import font_manager

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

plt.figure(figsize=(20,8),dpi=100)
x = range(11,31)
y = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]

plt.plot(x,y)

_xticks=["{}岁".format(i) for i in x]

plt.xticks(x,_xticks)
plt.xlabel("年龄")
plt.ylabel("朋友个数")
plt.title("交朋友的个数随年龄变化图示")
plt.show()

在这里插入图片描述

1.6
在这里插入图片描述
在这里插入图片描述

# -*- coding=UTF-8 -*-
import matplotlib.pyplot as plt
import random
from matplotlib import font_manager

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

plt.figure(figsize=(20,8),dpi=100)
x = range(11,31)
a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
b = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]

plt.plot(x,a,color='r',linewidth=4,alpha=0.2,linestyle=":",label="我")
plt.plot(x,b,color='g',linestyle="-.",label="同桌")

_xticks=["{}岁".format(i) for i in x]

plt.xticks(x,_xticks)
plt.xlabel("年龄")
plt.ylabel("朋友个数")
plt.title("交朋友的个数随年龄变化图示")

plt.legend(loc=0)

plt.show()

在这里插入图片描述

1.7

# -*- coding=UTF-8 -*-
import matplotlib.pyplot as plt
import random
from matplotlib import font_manager

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

def set_ax(ax):
    plt.sca(ax)
    _xticks = ["{}岁".format(i) for i in x]
    plt.xticks(x, _xticks)
    plt.xlabel("年龄")
    plt.ylabel("朋友个数")
    plt.title("交朋友的个数随年龄变化图示")
    plt.legend(loc=0)
# 创建子图像(可以在一个画板上创建多个图像)
# 开启子画布后,plt会默认将最后一个axes作为基准
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=100)
print(axes)
x = range(11, 31)
a = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 5, 4, 3, 3, 1, 1, 1]
b = [1, 0, 3, 1, 2, 2, 3, 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1]

axes[0].plot(x, a, color='r', linewidth=4, alpha=0.2, linestyle=":", label="我")
axes[1].plot(x, b, color='g', linestyle="-.", label="同桌")

set_ax(axes[0])
set_ax(axes[1])
fig.text(0.4, 0.5, '北山璎珞', fontsize=40, color='gray', alpha=0.4)
plt.show()

在这里插入图片描述

1.8

# -*- coding=UTF-8 -*-
import matplotlib.pyplot as plt
import random
from matplotlib import font_manager

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

x = range(31)
a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
b = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]

plt.plot(x,a)
plt.plot(x,b)
plt.show()

在这里插入图片描述

1.9 散点图

# -*- coding=UTF-8 -*-
import matplotlib.pyplot as plt
import random
from matplotlib import font_manager

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

plt.figure(figsize=(20,8),dpi=100)
x = range(31)
a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
b = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]

x1=range(1,32)
x2 = range(51,82)
#绘制散点图
plt.scatter(x1,a)
plt.scatter(x2,b)

_x = list(range(1,32))+list(range(51,82))
_xticks=["3月{}日".format(i) for i in x1]
_xticks +=["10月{}日".format(i) for i in x1]
plt.xticks(_x[::3],_xticks[::3],rotation=90)
plt.show()

在这里插入图片描述

发布了107 篇原创文章 · 获赞 20 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/beishanyingluo/article/details/104134845
今日推荐