昨天介绍的资料分析後,相信大家对於资料分析都能轻松上手。把特如果要把一堆数据和资料给你的老板和顾客看,可能就比较不适合。一张图胜过於千言万语,你需要是将数据进行视觉化,让别人一目了然。
Mathplotlib 是非常强大的视觉化工具,建立於 numpy 套件处理资料视觉化的套件。我们就来看看可以画哪些图吧!
pip install matplotlib
import matplotlib.pyplot as plt
采用经典样式
plt.style.use('classic')
# 互动式图片镶嵌在 notebook
%matplotlib notebook
# 静态的图片镶嵌在 notebook
%matplotlib inline
import matplotlib.pyplot as plt
x = [ i**2 for i in range(10)]
plt.plot(x)
plt.show()
import matplotlib.pyplot as plt
x = [ i**2 for i in range(10)]
plt.plot(x)
plt.savefig('demo.jpg')
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = plt.axes()
x = np.linspace(-5, 5, 1000)
ax.plot(x, np.sin(x))
plt.title('Sin')
plt.xlabel('x')
plt.ylabel('y')
可以直接在color这个参数修改文字,详细可以参考
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = plt.axes()
x = np.linspace(-5, 5, 1000)
ax.plot(x, np.sin(x), color='red')
plt.title('Sin')
plt.xlabel('x')
plt.ylabel('y')
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = plt.axes()
x = np.linspace(-5, 5, 1000)
ax.plot(x, np.sin(x))
plt.title('Sin')
plt.xlabel('x')
plt.ylabel('y')
# 调整 x 的刻度
plt.xticks([-3, -2, 0, 2, 5])
# 调整 x 的范围
plt.xlim(-10, 10)
plt.tick_params(axis='x', labelsize=12, color='r')
记得 plt.plot 的回传值要使用「,」才能让 lengend 正确呼叫成功哦!
loc 的参数可以是 best、upper right、center left、lower left 等等(可自己组组看英文)
import matplotlib.pyplot as plt
stock_a = [ 10, 59, 70, 61, 80]
stock_b = [ 67, 83, 37, 32, 48]
stock_c = [ 43, 23, 84, 75, 37]
month = [ 4, 5, 6, 7, 8]
plt.xticks(month)
line_a, = plt.plot(month, stock_a, '-o', label='A')
line_b, = plt.plot(month, stock_b, '-*', label='B')
line_c, = plt.plot(month, stock_c, '-^', label='C')
plt.legend(handles=[line_a, line_b, line_c], loc='lower right')
plt.title('Stock', fontsize=16)
plt.xlabel('Month', fontsize=16)
plt.ylabel('the price of stock', fontsize=16)
plt.show()
当然一张图也可以塞很多不同种类的图片,透过 subplot 可以各种摆图案哦!
plt.subplot(n_rows, n_columns, n_subplot)
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-5, 5, 1000)
plt.figure(figsize=(20, 5))
plt.subplot(1, 3, 1)
plt.plot(x, np.sin(x))
plt.subplot(1, 3, 2)
plt.plot(x, np.cos(x))
plt.subplot(1, 3, 3)
plt.plot(x, np.tan(x))
其实把 np.linspace 第三个参数值稍为调整低一点,只有呈现 20 个点,那就可以画散布图罗
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = plt.axes()
x = np.linspace(-5, 5, 20)
y = np.sin(x)
plt.plot(x, y, 'o')
# plt.scatter(x, y)
plt.title('Scatter Plot')
plt.xlabel('x')
plt.ylabel('y')
plt.plot 和 plt.scatter 都可以画出这个图。而 plt.scatter 可以针对每个点的大小或颜色作设定,在资料量小的时候没有差别,但倘若要绘制的资料点超过数千个时候,plt.plot 采用复制的方式、plt.scatter是个别建立,效能上 plt.plot 会胜过 plt.scatter。
import matplotlib.pyplot as plt
import numpy as np
# 随机生成 1000个点(normal distribution)
d = np.random.randn(1000)
plt.hist(d)
若想要每个长条加上数字,可以使用 plt.text 搭配回圈
import matplotlib.pyplot as plt
import numpy as np
fruits_num = [120, 320, 275]
ind = np.arange(len(fruits_num))
fig, ax = plt.subplots(figsize = (10,5))
plt.xticks(ind, ['banana', 'apple', 'lemon'])
plt.ylim(0, 500)
ax.bar(ind, fruits_num, width=0.4)
for index, data in enumerate(fruits_num):
plt.text(x=index , y =data+30 , s=data , fontdict=dict(fontsize=20))
plt.show()
<<: day 4 I'm your father, coroutine父子继承关系
决策树 (Decision tree) 今日学习目标 决策树演算法介绍 决策树如何生成? 如何处理分...
import { useEffect, useState, useRef } from "...
现在我们可以用各种方法将资料读取出来,不过通常读取後还要将资料做一些转换才适用,举个例子像是 boo...
昨天已经把大部分的 GUI 弄完了,之前也已经写好了服务器的程序,今天我们把两边拼起来吧! 搬移 s...
昨天我们说明的 SharePoint 网站基本架构主要重点有: 设定架设网站的目的 依照目的规划内容...