文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么在Python中使用matplotlib绘图

2023-06-14 22:54

关注

今天就跟大家聊聊有关怎么在Python中使用matplotlib绘图,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

python有哪些常用库

python常用的库:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。

Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和wxPython。

pip3 install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
import matplotlib.pyplot as plt

显示中文

借助全局参数配置字典rcParams,只需要在代码开头,添加如下两行代码即可

plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False

同时还可以设置字体,常见字体:

font.family  字体的名称
sans-serif   西文字体(默认)
SimHei       中文黑体
FangSong     中文仿宋
YouYuan      中文幼圆
STSong       华文宋体
Kaiti        中文楷体
LiSu         中文隶书

字体风格

plt.rcParams["font.style"] = "italic"

绘制子图

plt.subplot2grid()

plt.subplot2grid((3,3),(0,0),colspan=3)""""""plt.subplot2grid((3,3),(1,0),colspan=2)""""""plt.subplot2grid((3,3),(1,2),rowspan=2)""""""plt.subplot2grid((3,3),(2,0))""""""plt.subplot2grid((3,3),(2,1))plt.show()

怎么在Python中使用matplotlib绘图
2. plt.subplot()

import numpy as npimport pandas as pdimport matplotlib.pyplot as plt# 画第1个图:折线图x=np.arange(1,100)plt.subplot(221)plt.plot(x,x*x)# 画第2个图:散点图plt.subplot(222)plt.scatter(np.arange(0,10), np.random.rand(10))# 画第3个图:饼图plt.subplot(223)plt.pie(x=[15,30,45,10],labels=list('ABCD'),autopct='%.0f',explode=[0,0.05,0,0])# 画第4个图:条形图plt.subplot(224)plt.bar([20,10,30,25,15],[25,15,35,30,20],color='b')plt.show()

怎么在Python中使用matplotlib绘图

matplotlib绘图设置不显示边框、坐标轴

对于有些图形我们希望通过隐藏坐标轴来显得更加美观

plt.xticks([])plt.yticks([])ax = plt.subplot(2,5,1)# 去除黑框ax.spines['top'].set_visible(False)ax.spines['right'].set_visible(False)ax.spines['bottom'].set_visible(False)ax.spines['left'].set_visible(False)

实例:

#author:https://beishan.blog.csdn.net/import matplotlib.pyplot as pltfor i in range(0,10):    fig = plt.gcf()    fig.set_size_inches(12,6)    ax = plt.subplot(2,5,i+1)    # 去除坐标轴    plt.xticks([])    plt.yticks([])    # 去除黑框    ax.spines['top'].set_visible(False)    ax.spines['right'].set_visible(False)    ax.spines['bottom'].set_visible(False)    ax.spines['left'].set_visible(False)    # 设置各个子图间间距    plt.subplots_adjust(left=0.10, top=0.88, right=0.65, bottom=0.08, wspace=0.02, hspace=0.02)    ax.imshow(Xtrain[i],cmap="binary")

怎么在Python中使用matplotlib绘图

提高分辨率

如果感觉默认生成的图形分辨率不够高,可以尝试修改 dpi 来提高分辨率

plt.figure(figsize = (7,6),dpi =100)

设置绘图风格

有时我们会觉得matplotlib默认制作出来的图片太朴素了,不够高级,其实开发者也内置了几十种主题让我们自己选择,只要使用plt.style.use(‘主题名')指定主题即可

plt.style.use('ggplot')

常用的样式有

Solarize_Light2
_classic_test_patch
bmh
classic
dark_background
fast
fivethirtyeight
ggplot
grayscale
seaborn
seaborn-bright
seaborn-colorblind
seaborn-dark
seaborn-dark-palette
seaborn-darkgrid
seaborn-deep
seaborn-muted
seaborn-notebook
seaborn-paper
seaborn-pastel
seaborn-poster
seaborn-talk
seaborn-ticks
seaborn-white
seaborn-whitegrid
tableau-colorblind10

添加标题

plt.title("2020-2021北山啦粉丝数增长图")

显示网格

plt.grid()plt.grid(color='g',linewidth='1',linestyle='-.')

图例设置

plt.legend(["2020","2021"],loc="best")

也可以给图例添加标题

plt.plot([1,3,5,7],[4,9,6,8],"ro--")plt.plot([1,2,3,4], [2,4,6,8],"gs-.")plt.legend(["2020","2021"],loc="best",title="标题")plt.title("2020-2021北山啦粉丝数增长图")

添加公式

有时我们在绘图时需要添加带有数学符号、公式的文字,

plt.text(11000,0.45,r'拟合曲线为$f(x) = x^2-4x+0.5$')

图形交互设置

jupyter中的魔法方法

%matplotlib notebook 弹出可交互的matplotlib窗口%matplotlib qt5 弹出matplotlib控制台%matplotlib inline 直接嵌入图表,不需要使用plt.show()

保存图片

plt.savefig("pic.png",dpi=100,bbox_inches="tight")

怎么在Python中使用matplotlib绘图

读取图片

方法一

from PIL import Imageimage = Image.open("./pic.png")image.show()

怎么在Python中使用matplotlib绘图

方法二

import matplotlib.pyplot as pltX = plt.imread("./pic.png")plt.imshow(X)

怎么在Python中使用matplotlib绘图

条形图

def f(t):    return np.exp(-t) * np.cos(2*np.pi*t)a = np.arange(0,5,0.02)plt.subplot(211)plt.plot(a,f(a))plt.subplot(212)plt.plot(a,np.cos(2*np.pi*a),'r--')plt.show()

怎么在Python中使用matplotlib绘图

b = np.arange(0,2,0.02)plt.plot(b,np.sin(2*np.pi*b),'--',b,np.cos(2*np.pi*b),"*")

怎么在Python中使用matplotlib绘图

散点图

import numpy as npimport matplotlib.pyplot as plt# Fixing random state for reproducibilitynp.random.seed(19680801)N = 50x = np.random.rand(N)y = np.random.rand(N)colors = np.random.rand(N)area = (30 * np.random.rand(N))**2  # 0 to 15 point radiiplt.scatter(x, y, s=area, c=colors, alpha=0.5)plt.show()

怎么在Python中使用matplotlib绘图

带表格的图形

import numpy as npimport matplotlib.pyplot as pltdata = [[ 66386, 174296,  75131, 577908,  32015],        [ 58230, 381139,  78045,  99308, 160454],        [ 89135,  80552, 152558, 497981, 603535],        [ 78415,  81858, 150656, 193263,  69638],        [139361, 331509, 343164, 781380,  52269]]columns = ('Freeze', 'Wind', 'Flood', 'Quake', 'Hail')rows = ['%d year' % x for x in (100, 50, 20, 10, 5)]values = np.arange(0, 2500, 500)value_increment = 1000# Get some pastel shades for the colorscolors = plt.cm.BuPu(np.linspace(0, 0.5, len(rows)))n_rows = len(data)index = np.arange(len(columns)) + 0.3bar_width = 0.4# Initialize the vertical-offset for the stacked bar chart.y_offset = np.zeros(len(columns))# Plot bars and create text labels for the tablecell_text = []for row in range(n_rows):    plt.bar(index, data[row], bar_width, bottom=y_offset, color=colors[row])    y_offset = y_offset + data[row]    cell_text.append(['%1.1f' % (x / 1000.0) for x in y_offset])# Reverse colors and text labels to display the last value at the top.colors = colors[::-1]cell_text.reverse()# Add a table at the bottom of the axesthe_table = plt.table(cellText=cell_text,                      rowLabels=rows,                      rowColours=colors,                      colLabels=columns,                      loc='bottom')# Adjust layout to make room for the table:plt.subplots_adjust(left=0.2, bottom=0.2)plt.ylabel("Loss in ${0}'s".format(value_increment))plt.yticks(values * value_increment, ['%d' % val for val in values])plt.xticks([])plt.title('Loss by Disaster')plt.show()

怎么在Python中使用matplotlib绘图

看完上述内容,你们对怎么在Python中使用matplotlib绘图有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯