Matplotlib绘图:简单、直接上手

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的参数设置

如下代码,第一行先设置可以显示中文。
第二行常规先传入x和y,然后设置marker,最后显示图例。
第三行指定图例的位置。

plt.rcParams['font.sans-serif']=['STSong']  # 设置显示华文宋体
plt.plot(np.arange(10), list, marker='*', label="总降雨场次")
plt.legend(loc=1)  # 显示图例的放置位置
  • marker有如下几种写法:
marker='v'
marker='o'
marker='^'
marker='+'
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)
  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值