python可视化——plt.plot()&&plt.subplots

python可视化——plt.plot()&&plt.subplots,第1张

文章目录
  • 0 写在前面
  • 1 plt.plot() 函数
    • 1.1 分开写参数
    • 1.2 marker的参数设置
    • 1.3 设置标题、x和y轴的字体等
    • 1.4 设置刻度
    • 1.5 设置刻度朝向
    • 1.6 刻度的长度、宽度
    • 1.7 画多个plt的时候,添加图例
    • 1.8 设置多图层的图层顺序
    • 1.9 指数坐标轴
  • 2 plt.subplots()画多个子图
  • 3 保存到png图片
    • 3.1 保存的图片不完整
    • 3.2 紧致布局
    • 3.3 设置分辨率

0 写在前面
  • 之前在base环境下画图,结果画不出,返回异常值如下:
    - 使用matplotlib.pyplot报错exit code -1073741819 (0xC0000005)
使用matplotlib.pyplot报错exit code -1073741819 (0xC0000005)
  • 换了一个虚拟环境env就跑起来了,所以原因竟然是
    anaconda环境混乱,包和包之间互相影响!
1 plt.plot() 函数
  1. 函数声明
	plt.plot(x, y, format_string, **kwargs)
  1. 参数介绍
x:X轴数据,列表或者数组(可选)
y:Y轴数据,列表或者数组
format_string:控制曲线的格式字符串(可选)
**kwargs:第二组或者更多(x,y,format_string), 可画多条曲线
  1. format_string介绍
>>>颜色:
'b' 蓝色
'c' 青绿
'g' 绿色
'k' 黑色
'm' 洋红
'w' 白色
'y' 黄色
'r' 红色
>>>风格字符
'-' 实线
'--' 虚线
':'  点线
'-.' 点横线(我也不知怎么描述这个)
'o' 实心圆
  1. 代码1如下:
import matplotlib.pyplot as plt
import numpy as np

X = np.arange(0, 12.1, 0.1)
Y = np.sin(X)

x = [1,2,3]
y = [1,4,9]
plt.plot(X, Y, "r--")  # 红色虚线
plt.show()
  • 输出1如下:
  1. 代码2如下:
import matplotlib.pyplot as plt
import numpy as np

X = np.arange(0, 12.1, 0.1)
Y = np.sin(X)

x = [1,2,3]
y = [1,4,9]
plt.plot(X, Y, "ro")
plt.show()
  • 输出2 如下:
1.1 分开写参数
import matplotlib.pyplot as plt
import numpy as np

X = np.arange(0, 12.1, 0.1)
Y = np.sin(X)

x = [1,2,3]
y = [1,4,9]
plt.plot(X, Y, color='lime', linestyle='-', linewidth=2)
plt.show()

1.2 marker的参数设置
marker='v'
marker='o'
marker='^'

中心的颜色:
markerfacecolor='black'

边缘的颜色:
markeredgecolor='red'

1.3 设置标题、x和y轴的字体等
ax1 = plt.gca()
ax1.set_title('Big Title', fontname='Arial', fontsize=20, weight='bold')
ax1.set_xlabel('time(UTC)')
ax1.set_ylabel('T (C)')

1.4 设置刻度
  • 可以根据需要标出刻度,还可以用字母代替

import matplotlib.pyplot as plt
import numpy as np

X = np.arange(0, 12.1, 0.1)
Y = np.sin(X)

x = [1,2,3]
y = [1,4,9]
plt.plot(X, Y, color='lime', linestyle='-', linewidth=2, \
         marker='^', markerfacecolor='black', markeredgecolor='red',\
         markersize=4, markeredgewidth=1)

ax1 = plt.gca()
ax1.set_title('Big Title', fontname='Arial', fontsize=20, weight='bold')
ax1.set_xlabel('time(UTC)')
ax1.set_ylabel('T (C)')

# 设置有几个刻度
ax1.set_xticks([0, 2.5, 7, 11])
# 设置每个刻度的显示
ax1.set_xticklabels(['J', 'A', 'W', 'E'])

plt.show()


1.5 设置刻度朝向
  • 由向外改为向内

import matplotlib.pyplot as plt
import numpy as np

X = np.arange(0, 12.1, 0.1)
Y = np.sin(X)

x = [1,2,3]
y = [1,4,9]
plt.plot(X, Y, color='lime', linestyle='-', linewidth=2, \
         marker='^', markerfacecolor='black', markeredgecolor='red',\
         markersize=4, markeredgewidth=1)

ax1 = plt.gca()
ax1.set_title('Big Title', fontname='Arial', fontsize=20, weight='bold')
ax1.set_xlabel('time(UTC)')
ax1.set_ylabel('T (C)')

# 设置有几个刻度
ax1.set_xticks([0, 2.5, 7, 11])
# 设置每个刻度的显示
ax1.set_xticklabels(['J', 'A', 'W', 'E'])
ax1.tick_params(axis='both', direction='in', color='blue')



plt.show()


1.6 刻度的长度、宽度
ax1.tick_params(axis='both', direction='in', color='blue',\
                length=10, width=2)
1.7 画多个plt的时候,添加图例
  • 在每一个plot括号内增加label
  • 然后添加plt.legend(loc='best')

import matplotlib.pyplot as plt
import numpy as np

X = np.arange(0, 12.1, 0.1)
Y = np.sin(X)

x = [1,2,3]
y = [1,4,9]
plt.plot(X, Y, color='lime', linestyle='-', linewidth=2, \
         marker='^', markerfacecolor='black', markeredgecolor='red',\
         markersize=4, markeredgewidth=1, label="zhang")

ax1 = plt.gca()
ax1.set_title('Big Title', fontname='Arial', fontsize=20, weight='bold')
ax1.set_xlabel('time(UTC)')
ax1.set_ylabel('T (C)')

# 设置有几个刻度
ax1.set_xticks([0, 2.5, 7, 11])
# 设置每个刻度的显示
ax1.set_xticklabels(['J', 'A', 'W', 'E'])
ax1.tick_params(axis='both', direction='in', color='blue',\
                length=10, width=2)

plt.plot(X+2, Y, label="chen")
plt.legend(loc='best')
plt.show()

1.8 设置多图层的图层顺序
zorder设置【从1开始】

1.9 指数坐标轴
X2 = np.arange(1, 100, 1)
Y2 = np.exp(X2)
plt.plot(X2, Y2)
ax = plt.gca()
ax.set_yscale('log')

2 plt.subplots()画多个子图
import matplotlib.pyplot as plt
import numpy as np

X = np.arange(0, 12.1, 0.1)
Y = np.sin(X)
fig, ax = plt.subplots(2, 1)  # 两行一列
ax[0].plot(X,Y)
ax[1].plot(X+2, Y,'r')

ax[0].set_xlim([0, 10])  # 使刻度保持一致
ax[1].set_xlim([0, 10])  # 使刻度保持一致

plt.show()

3 保存到png图片
  • 一定是先保存图片,然后再show()
plt.savefig('./Big.png')
plt.show()
  • 完整代码如下:

import matplotlib.pyplot as plt
import numpy as np

X = np.arange(0, 12.1, 0.1)
Y = np.sin(X)


plt.plot(X, Y, color='lime', linestyle='-', linewidth=2, \
         marker='^', markerfacecolor='black', markeredgecolor='red',\
         markersize=4, markeredgewidth=1, label="zhang", zorder=2)

ax1 = plt.gca()
ax1.set_title('Big Title', fontname='Arial', fontsize=20, weight='bold')
ax1.set_xlabel('time(UTC)')
ax1.set_ylabel('T (C)')

# 设置有几个刻度
ax1.set_xticks([0, 2.5, 7, 11])
# 设置每个刻度的显示
ax1.set_xticklabels(['J', 'A', 'W', 'E'])
ax1.tick_params(axis='both', direction='in', color='blue',\
                length=10, width=2)

plt.plot(X+2, Y, label="chen", zorder=1)
plt.legend(loc='best')
plt.savefig('./Big.png')
plt.show()

3.1 保存的图片不完整
  • 设置画布的大小
fig = plt.figure(figsize=(8, 4))
3.2 紧致布局
  • 保证所有的内容都在画布中输出
plt.tight_layout()
3.3 设置分辨率
  • dpi=300
plt.savefig('./Big.png', dpi=300)

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/569253.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存