欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python Matplotlib 画心形曲线

程序员文章站 2022-07-13 08:33:36
...

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

所要画的心形图案如下图所示:
Python Matplotlib 画心形曲线
具体的设置方法如下面的代码所示,已经对每行代码进行了注释。

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

上述代码运行结果为:Python Matplotlib 画心形曲线

相关标签: python tensorflow