【Python/绘图】python绘图

这篇具有很好参考价值的文章主要介绍了【Python/绘图】python绘图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、二维图

1、柱形图

1.1、基础柱形图

import matplotlib.pyplot as plt
import numpy as np

# 模拟一些数据
np.random.seed(3)
x1 = 0.5 + np.arange(8)
y1 = np.random.uniform(2, 15, len(x1))
x2 = np.arange(10)
y2 = x2 ** 2
x3 = np.linspace(1,10,15)
y3 = x3 ** 2 + 2 * x3 - 2

# 获得图和坐标轴,图长宽比是8:5,图有1行3列,图中有3个坐标轴,这三个坐标轴共享y轴
fig, ax = plt.subplots(1, 3, figsize=(8,5), sharey=True)


# 为坐标轴设置边界和刻度
ax[0].set(xlim=(0, 10), ylim=(0, 100), xticks=np.arange(1, 11, 2), yticks=np.arange(1, 200, 10))
ax[1].set(xlim=(0, 10), ylim=(0, 100), xticks=np.arange(1, 11, 2), yticks=np.arange(1, 200, 10))
ax[2].set(xlim=(0, 10), ylim=(0, 100), xticks=np.arange(1, 11, 2), yticks=np.arange(1, 200, 10))

# 在坐标轴上画出三个柱形图
ax[0].bar(x1, y1, width=1, edgecolor="red", linewidth=0.7)
ax[1].bar(x2, y2, width=0.7, edgecolor="green", linewidth=1.4)
ax[2].bar(x3, y3, width=0.4, edgecolor="white", linewidth=2.1)

plt.show()

效果
python画图,python,python,matplotlib,numpy

1.2、设置颜色、图例、图的标题

import matplotlib.pyplot as plt
import numpy as np

# 模拟一些数据
np.random.seed(3)
x1 = 0.5 + np.arange(8)
y1 = np.random.uniform(2, 15, len(x1))
x2 = np.arange(10)
y2 = x2 ** 2
x3 = np.linspace(1, 10, 15)
y3 = x3 ** 2 + 2 * x3 - 2

# 用来正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
# 用来正常显示负号
plt.rcParams['axes.unicode_minus'] = False
fig, ax = plt.subplots(1, 3, figsize=(8, 5), sharey=True)
ax[0].set(xlim=(0, 10), ylim=(0, 100), xticks=np.arange(1, 11, 2), yticks=np.arange(1, 200, 10))
ax[1].set(xlim=(0, 10), ylim=(0, 100), xticks=np.arange(1, 11, 2), yticks=np.arange(1, 200, 10))
ax[2].set(xlim=(0, 10), ylim=(0, 100), xticks=np.arange(1, 11, 2), yticks=np.arange(1, 200, 10))
ax[0].bar(x1, y1, width=1, edgecolor="red", linewidth=0.7)
ax[2].bar(x3, y3, width=0.4, edgecolor="white", linewidth=2.1)

# 为第二个柱形图添加颜色和标签。为每个x设置标签和颜色,有多少个x值,列表中就要有多少个元素。画完之后得到画的内容
container = ax[1].bar(x2[y2 < 20], y2[y2 < 20], width=0.7, edgecolor="green", linewidth=1.4, color="red",
                      label="小于20")
ax[1].bar(x2[np.logical_and(y2 >= 20, y2 < 50)], y2[np.logical_and(y2 >= 20, y2 < 50)], width=0.7, edgecolor="green",
          linewidth=1.4, color="green", label="介于20到50")
ax[1].bar(x2[y2 > 50], y2[y2 > 50], width=0.7, edgecolor="green", linewidth=1.4, color="blue", label="大于50")
# 在画的内容中显示y标签
ax[1].bar_label(container=container, label_type="edge")
# 有了标签之后,就可以显示图例
ax[1].legend(title="")
# 图2的标题
ax[1].set_title("图2")
# 图3的标题
ax[2].set_title("图3")

plt.show()

坐标轴对象可以设置要画的内容的标签,画完后可以返回一个绘制内容对象,绘制内容对象可以画出y标签的值。

效果如下

python画图,python,python,matplotlib,numpy
可以在坐标轴画图的时候指定误差棒。

import numpy as np
import matplotlib.pyplot as plt

# Fixing random state for reproducibility
np.random.seed(19680801)

# Example data
people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim')
y_pos = np.arange(len(people))
performance = 3 + 10 * np.random.rand(len(people))
error = np.ones(len(people))

fig, ax = plt.subplots()

# xerr是x轴方向的误差棒
hbars = ax.barh(y_pos, performance, xerr=error, align='center')
ax.set_yticks(y_pos, labels=people)
# ax.invert_yaxis()  # labels read top-to-bottom
ax.set_xlabel('Performance')
ax.set_title('How fast do you want to go today?')

# Label with specially formatted floats
ax.bar_label(hbars, fmt='%.2f')
ax.set_xlim(right=15)  # adjust xlim to fit labels

plt.show()

这里是将误差棒做成标签指示条了
python画图,python,python,matplotlib,numpy

1.3、柱状堆积图

import matplotlib.pyplot as plt
import numpy as np

# 模拟一些数据
x = ['文物{}'.format(i) for i in range(10)]
y1 = np.arange(1,11)
y2 = np.arange(11,21)

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

fig, ax = plt.subplots(1,1)
container1=ax.bar(x,y1,color="red",label="数据集1",width=0.6,edgecolor="black")
# 关键在于画第二个内容时,要指定画的内容的底部是哪里。这里指定了第二个内容的底部是第一个内容的顶部
container2=ax.bar(x,y2,color="yellow",label="数据集2",bottom=y1,width=0.6,edgecolor="black")
ax.bar_label(container1,label_type="center")
ax.bar_label(container2,label_type="center")
ax.legend()

plt.show()

效果如下:
python画图,python,python,matplotlib,numpy

1.4、分组柱状图

最好首先确定每一组的x值、y值、在图中的位置、颜色、组别标签。后面比较好改。下面的代码只设定了x值、y值、颜色、组别标签,位置没有首先设置,是边循环边确定的。

import numpy as np
import matplotlib.pyplot as plt

gruop_label = ['第一组','第二组','第三组']
gruop_color = ['red','green','yellow']
x = np.arange(1,7,2)
y1 = np.arange(1,7,2)
y2 = np.arange(3,9,2)
y3 = np.arange(5,11,2)
y_list = [y1,y2,y3]

# 用来正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
# 用来正常显示负号
plt.rcParams['axes.unicode_minus'] = False
fig, ax = plt.subplots(1,1)
#画三次,每次都在x轴上偏斜一定距离画
width = 0.5
for index in range(len(y_list)):
    bar = ax.bar(x+index*width,y_list[index],edgecolor="black",label=gruop_label[index],width=width,color=gruop_color[index])
    ax.bar_label(bar,label_type="edge")
ax.legend()
plt.show()

效果如下
python画图,python,python,matplotlib,numpy
会发现x轴的刻度错了。要把x轴的刻度设置成组别的标签,然后标签需要居中。

import numpy as np
import matplotlib.pyplot as plt

gruop_label = ['第一组','第二组','第三组']
gruop_color = ['red','green','yellow']
x = np.arange(1,7,2)
y1 = np.arange(1,7,2)
y2 = np.arange(3,9,2)
y3 = np.arange(5,11,2)
y_list = [y1,y2,y3]

# 用来正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
# 用来正常显示负号
plt.rcParams['axes.unicode_minus'] = False
fig, ax = plt.subplots(1,1)
#画三次,每次都在x轴上偏斜一定距离画
width = 0.5
for index in range(len(y_list)):
    bar = ax.bar(x+index*width,y_list[index],edgecolor="black",label=gruop_label[index],width=width,color=gruop_color[index])
    ax.bar_label(bar,label_type="edge")
ax.legend()
ax.set_xticks(x+1*width,gruop_label)

可以了。
python画图,python,python,matplotlib,numpy

二、三维图

1、三维散点图

import numpy as np
import matplotlib.pyplot as plt

# 准备一些1000个点,这些点分布在一个平面上
x = np.random.normal(0,1,1000)
y = np.linspace(0,1,1000)
z = 4 * x + 5 * y + 1

fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
ax.scatter3D(x,y,z,color='blue')

plt.show()

python画图,python,python,matplotlib,numpy

2、三维线框图

import numpy as np
import matplotlib.pyplot as plt

# 准备一些20个点,这些点分布在一个平面上(这些点要顺序生成,不能随机了)
x = np.linspace(-3,3,20)
y = np.linspace(-3,3,20)
# 把两个维度的数据形成网格
x, y =np.meshgrid(x,y)
# 利用网格得到z的数据(最好不要用到矩阵乘法……尽量使用标量*矩阵的形式吧)
z = 4 * x + 5 * y + 1

fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
ax.plot_wireframe(x,y,z,color='blue')

plt.show()

python画图,python,python,matplotlib,numpy

import numpy as np
import matplotlib.pyplot as plt

# 准备一些20个点,这些点分布在一个平面上(这些点要顺序生成,不能随机了)
x = np.linspace(-3,3,20)
y = np.linspace(-3,3,20)
# 把两个维度的数据形成网格
x, y =np.meshgrid(x,y)
# 利用网格得到z的数据(最好不要用到矩阵乘法……尽量使用标量*矩阵的形式吧)
z = 4 * (x ** 2) + 5 * (y ** 3) + 1

fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
ax.plot_wireframe(x,y,z,color='blue')

plt.show()

python画图,python,python,matplotlib,numpy文章来源地址https://www.toymoban.com/news/detail-723784.html

到了这里,关于【Python/绘图】python绘图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python常见库matplotlib之画图文字的中文显示

    第一章 Python常见库matplotlib之画图文字的中文显示 第二章 Python常见库matplotlib之画图中各个模块的含义及修改方式 第三章 Python常见库matplotlib之多个子图绘图 在数据可视化时,常常需要使用图例来解释图中不同元素的含义。在论文写作时尤其是毕业论文写作时,需要图中文字

    2024年02月06日
    浏览(42)
  • Python如何随数据更新实时画图?Python实时动态绘图

    在数据分析和可视化场景中,我们常常需要实现实时动态图表,比如每分钟读取数据库新的记录,及时更新图表显示最新数据,而不是静态显示某个时间点的数据。本文将介绍使用Python matploblib库的animation功能实现实时动态绘图的方法。 问题背景 我们有一个Excel表,其中记录

    2024年02月12日
    浏览(51)
  • python使用matplotlib画图时在指定位置加上文字

    使用plt.text()。该函数的语法如下: 参数说明: x 和 y:表示文本注释的位置,可以是数值或字符串。如果是数值,则表示注释在坐标轴上的位置;如果是字符串,则表示注释在图形上的相对位置(如 ‘center’ 表示居中)。 s:表示要添加的文本内容。 fontdict:一个字典,用

    2024年02月11日
    浏览(40)
  • 【Python】matplotlib.plot画图横坐标混乱及间隔处理

     今天用matplotlib.plot画折线图图时发现横坐标并没有按顺序排列,出现了混乱的情况,导致图很乱,查了好多方法发现是数据类型的原因(最近我出现的好多问题都是因为数据类型不对,下次出问题要记得用type先查一下数据类型)... 我想从06 排到 22,结果不知道为什么06出现在

    2024年02月11日
    浏览(42)
  • Python(matplotlib)画图设置正斜体,及中文宋体、英文Timenews--用于论文画图,导出高清晰图像

    在代码钱加入:  这里先介绍怎么同时设置上下标,看代码照着做即可  其次,上下标正斜体的设置,比如说把上图net设置为斜体:   其次,上下标正斜体的设置,比如说把上图net改为整体、F改为斜体:

    2024年02月11日
    浏览(60)
  • Python matplotlib 画图 字体、字体大小、字体粗细、文字方向、斜体、旋转角度 全集

    Python matplotlib 画图 字体、字体大小、字体粗细、文字方向、斜体 统一设置 单独设置 设置字体 font 设置坐标轴 axes 字体大小 labelsize 设置标签 tick 字体大小 labelsize 设置坐标轴 axes 字体粗细 labelweight 设置标签 tick 字体粗细 labelweight 可选粗细有 [\\\'light\\\',\\\'normal\\\',\\\'medium\\\',\\\'semibold\\\',\\\'b

    2024年02月12日
    浏览(56)
  • Python matplotlib 画图 设置标题 大标题 副标题 大小、位置、粗细全集

    设置标题大小、字体、位置、字体粗细、斜体(二级) 设置大标题 suptitle 标题大小、字体、位置、字体粗细、斜体(一级)

    2024年02月13日
    浏览(47)
  • python——matplotlib绘图详解大全

    目录 一、图形绘制大全 1.1 2D图形绘制 1.1.1 绘制单线图形 1.1.2 绘制多线图 1.1.3 读取文件中的数据绘制图形 1.1.4 绘制散点图 1.1.5 绘制条形图 1.1.5.1 单条条形图 1、垂直条形图 2、水平条形图 1.1.5.2 多组条形图 1.1.5.3 堆积条形图 1.1.5.4 对称条形图 1.1.4 饼图 1.1.5 直方图 1.1.6 箱形

    2024年02月09日
    浏览(42)
  • Python Matplotlib 3D绘图详解(汇总)

    最初开发的 Matplotlib,仅支持绘制 2d 图形,后来随着版本的不断更新, Matplotlib 在二维绘图的基础上,构建了一部分较为实用的 3D 绘图程序包,比如 mpl_toolkits.mplot3d,通过调用该程序包一些接口可以绘制 3D散点图、3D曲面图、3D线框图等 mpl_toolkits 是 Matplotlib 的绘图工具包。

    2024年02月04日
    浏览(39)
  • Python 数据分析——matplotlib 快速绘图

    matplotlib采用面向对象的技术来实现,因此组成图表的各个元素都是对象,在编写较大的应用程序时通过面向对象的方式使用matplotlib将更加有效。但是使用这种面向对象的调用接口进行绘图比较烦琐,因此matplotlib还提供了快速绘图的pyplot模块。本节首先介绍该模块的使用方法

    2024年02月11日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包