matplotlib绘制各类图形

简介

matplotlib是Python的一款2D绘图软件,用它可以较方便的绘制出各种统计图。
下面是matplotlib绘制各种图形的基本用法,更详细的使用方法可以参考官方文档https://matplotlib.org/api/pyplot_summary.html

全局设置:

import numpy as np
from matplotlib import pyplot as plt#导入pyplot绘图工具
%matplotlib inline#在Jupyter notebook中由于每个人的环境有差异,有些必须执行plt.show()才能将图片显示出来,加上这行就不用show()也能显示了
plt.rcParams['font.sans-serif']=["SimHei"]#
plt.rcParams['axes.unicode_minus'] = False#解决中文乱码的问题
条形图

plt.plot()是绘制折线图的方法

#创建画板
plt.figure(figsize=(8,4))  # 8inch*4inch
#绘制折线图plt.plot()
plt.plot([1, 2, 3],[10, 14, 12], label="第一条线")
plt.plot([1, 2, 3], [5, 7, 4], label="第二条线")
#plt.show()  如果在pycharm中,必须要调用show函数显示图表
# plt.xlabel("x轴")
# plt.ylabel("y轴")
plt.legend()#图例
plt.title("123")
# plt.show()

输出图像:
柱状图

plt.bar()

x = np.arange(1, 10, 2)
y = [5, 2, 7, 8, 2]
x1 = np.arange(2, 11, 2)
y1 = [8, 6, 2, 5, 6]
plt.bar(x, y, label="柱状图1")
plt.bar(x1, y1, label="柱状图2", color="r", width=1.1)

输出:
条形图

plt.barh()
使用方法同柱状图

直方图
ages = np.random.randint(0, 100, 30)#年纪
bins = np.arange(0, 100, 10)
plt.hist(ages, bins, histtype="barstacked", rwidth=0.8)#年纪频率直方图, rwidth是柱子的宽度

输出:
扇形图
players = [10, 20, 3, 90]
plt.figure(figsize=(10, 10))
types = ["wow", "war3", "cs", "lol"]
plt.pie(players, #label
        labels=types, #标签
        startangle=90, #旋转角度
        shadow=True, #阴影
        autopct="%1.1f%%", #百分比显示
        explode=(0, 0.2, 0, 0), #突出显示第1个
        textprops={"fontsize":20})#字体属性,这里设大小为20

输出:
散点图
x = np.arange(1, 9)
y = np.random.randint(1, 6, 8)
plt.scatter(x, y, label="x", color="k", s=25, marker="o")

输出:
堆叠图
plt.stackplot(days, 
              sleeping,eating,working,playing,
              labels=["Sleeping", "Eating", "Working", "Playing"],
              colors=["r", "g", "m", "y"])
正余弦
#三角函数
plt.figure(figsize=(10, 7))#取出一张10*7的白纸
ax = plt.gca()#
ax.spines["bottom"].set_position(("data", 0))
ax.spines["left"].set_position(("data", 0))
ax.spines["top"].set_color("none")
ax.spines["right"].set_color("none")
ax.xaxis.set_ticks_position("bottom")
X = np.linspace(-np.pi, np.pi, 512, endpoint=True)#在-np.pi~np.pi之间选择256个等差数
S, C = np.sin(X), np.cos(X)
# print(X)
# print(S, C, sep="\n")
plt.plot(X, S, "-", lw=2, aa=False, ms=50, label="sin")#设置线宽5 关闭抗锯齿 默认开启
plt.plot(X, C, "-", lw=2, aa=True, label="cos")#线宽10
plt.xlim(X.min() * 1.2, X.max() * 1.2)#横坐标范围
plt.ylim(S.min() * 1.2, S.max() * 1.2)#纵坐标范围
plt.xticks([0, X.max(), X.min()], [0, r"$\pi$", "$-\pi$"])#横坐标刻度
plt.yticks([S.min(), S.max()])#纵坐标刻度
plt.legend(fontsize=20)

t = 2 / 3 * np.pi
plt.plot([t, t], [0, np.sin(t)], "--", color="b")
plt.scatter([t], [np.sin(t)], s=100)#散点图
#设置标注
plt.annotate(r"$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$",
             (t, np.sin(t)),
             xycoords="data", textcoords="offset pixels",
             xytext=(20, 20),
             arrowprops=dict(arrowstyle="->" , connectionstyle="arc3,rad=.2"),#箭头属性
             fontsize=16,#zi字体大小
            )

plt.plot([t, t], [0, np.cos(t)], "--", color="r")
plt.scatter([t], [np.cos(t)], s=100)#散点图
#设置标注
plt.annotate(r"$\cos(\frac{2\pi}{3})=-\frac{1}{2}$",
             (t, np.cos(t)),
             xycoords="data", textcoords="offset pixels",
             xytext=(20, 0),
             arrowprops=dict(arrowstyle="->" , connectionstyle="arc3,rad=.2"),#箭头属性
             fontsize=16,#zi字体大小
            )

输出;
加载本地csv文件并可视化
x, y = np.loadtxt("./matplotlib-demo.csv", delimiter=",", usecols=(0, 1), unpack=True)
print(x, y)

plt.plot(x, y, label="折线图")
plt.title("numpy读取csv文件并用matplotlib可视化")

输出:
加载网络图片
response = requests.get("https://api.douban.com/v2/book/1220562")
print(response.text)
js_str = json.loads(response.text)
tags = js_str["tags"]
x = []
y = []
for tag in tags:
    x.append(tag["name"])
    y.append(tag["count"])
plt.bar(x, y, label="图书热门标签")
plt.legend()
plt.xlabel("搜索标签")
plt.ylabel("搜索标签排名")
plt.title("图书热词搜索排名")

输出:
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352

推荐阅读更多精彩内容

  • Matplotlib 入门教程 来源:Introduction to Matplotlib and basic l...
    布客飞龙阅读 31,796评论 5 162
  • 一、概述 深度学习的一个重要手段是训练数据和训练过程的可视化,因此,我们关于深度学习的系列介绍文章就从Matplo...
    aoqingy阅读 6,149评论 0 24
  • Matplotlib 入门知识 matplotlib在Python中应用最多的2D图像的绘图工具包,使用matpl...
    文婷_5250阅读 1,532评论 0 1
  • matplotlib 本文是在ipython notebook上编写,是matplot的学习笔记 对一些常用的图形...
    任海亮阅读 8,492评论 2 17
  • 人生的过程,不就像一面镜子,在擦镜子上的灰尘时,好看清自己的样子,看清自己的路,当明白自己正走在属于自己的路上,就...
    写字人已失踪阅读 171评论 1 1