Python Matplotlib 画心形曲线[通俗易懂]

Python Matplotlib 画心形曲线[通俗易懂]https://blog.csdn.net/sinat_34328764/article/details/80246139

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

本文主要采用matplotlib绘制心形图案,并学习matplotlib中坐标轴的移动,图片背景,刻度字体大小,颜色,背景网格线,图片保存等的操作方法。

所要画的心形图案如下图所示:
图1 心形图样及其表达式
具体的设置方法如下面的代码所示,已经对每行代码进行了注释。

import matplotlib.pyplot as plt
import numpy as np


#生成从-1到1的以为数组作为x轴的数据

x_data1 = np.linspace(-1,1,1000)

#根据心形公式,得到y的表达式,由于有正负之分,故分开表示
y_data1 = np.sqrt(1 - x_data1**2) + pow(np.abs(x_data1),float(2)/float(3))
y_data2 = -np.sqrt(1 - x_data1**2)+ pow(np.abs(x_data1),float(2)/float(3))

#设置空图表,并把两组数据已散点图的形式画在空图表上
fig = plt.figure()
plt.scatter(x_data1, y_data1,color = 'red')
plt.scatter(x_data1, y_data2,color = 'red')

#设置坐标轴的显示范围
plt.xlim(-1.25,1.25)
plt.ylim(-1.2,1.7)

#得到坐标轴信息
ax = plt.gca()

#设置坐标轴颜色,把右边和顶部的坐标设置为没有颜色
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['bottom'].set_color('white')
ax.spines['left'].set_color('white')

#设置坐标轴的位置
ax.spines['left'].set_position(('data',0))
ax.spines['bottom'].set_position(('data',0))

#设置刻度的位置
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')


#设置刻度的相关参数,依次包括:坐标轴名称,字体大小,字体倾斜角度,字体颜色
ax.tick_params(axis="x", labelsize=18, labelrotation=0, labelcolor="white")
ax.tick_params(axis="y", labelsize=18, labelrotation=0, labelcolor="white")

#设置坐标轴线的宽度
ax.spines['bottom'].set_linewidth(3)
ax.spines['left'].set_linewidth(3)

#设置图片的背景
ax.set_facecolor('xkcd:black')

#设置图表的长宽
fig.set_figheight(15)
fig.set_figwidth(15)

#设置
ax.grid(True, linestyle='-.')

plt.show()

#保存绘制的图形到默认的目录
fig.savefig('heart.png', dpi=500)


值得注意的是,在对负数采用pow()进行开次方时,需要采用np.abs()对数据进行绝对值化,如代码所示:

y_data1 = np.sqrt(1 - x_data1**2) + pow(np.abs(x_data1),float(2)/float(3))
y_data2 = -np.sqrt(1 - x_data1**2)+ pow(np.abs(x_data1),float(2)/float(3))

否者,会出现如下错误:

RuntimeWarning: invalid value encountered in power

上述代码运行结果为:在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183588.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • laravel5数据库配置及其注意事项

    laravel5数据库配置及其注意事项

    2021年10月20日
    35
  • Idea中的war和war explore有什么区别

    Idea中的war和war explore有什么区别我们发布项目时选择war还是war explore:war模式:将web工程以war包的形式上传到服务器 war exploed模式:将web工程以当前文件夹的位置关系上传到服务器war模式:先打成war包,然后再发布到Tomcat的ROOT下,所以选择这个后,你再看下你的tomcat的root文件夹下,是刚打成的项目war exploded模式:只编译,生成target;然后把当…

    2022年6月13日
    84
  • mysql 新特性之geometry

    mysql 新特性之geometry

    2021年11月3日
    189
  • HttpClient 3.1 文件上传

    HttpClient 3.1 文件上传

    2021年9月10日
    71
  • 【深度学习入门】——亲手实现图像卷积操作[通俗易懂]

    【深度学习入门】——亲手实现图像卷积操作[通俗易懂]深度学习中有一个很重要的概念就是卷积神经网络CNN,卷积神经网络中又有卷积层、池化层的概念。尤其是卷积层,理解难度比较大,虽然书中或者是视频中都有详细介绍过它的基础概念,但对于求知欲望很强烈的我,我总心里痒痒的,总想亲手实现,看看效果,怕的就是自己会眼高手低,做技术人最可怕的就是眼高手低。所以,我打算用python来亲自验证一遍。什么是卷积?卷积(convolution)是数学知…

    2022年5月8日
    74
  • DP和HDMI区别「建议收藏」

    转自:https://www.toutiao.com/i6877677362054595080在目前市面上显示器接口中,VGA和DVI已经逐渐退出了历史舞台,Type-C还算是小众,而DP(DisplayPort)与HDMI则成为了主流产品的标配,目前的主流级显卡也是以这两个输出接口为主,而新的问题也随之诞生了:当这两个接口都可以使用的时候,选择哪个会更好?对于大部分普通的消费者来说,显示器能跟主机正常连接就行,随便哪个接口都无所谓,反正能正常使用,但是对于DIY玩家来说,这个问题就显得非常重要

    2022年4月16日
    168

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号