jfreechart折线图y轴刻度值_matplotlib-绘制折线图-plot

什么是matplotlib?先体验一下它的功能

入门级使用

体验效果

from matplotlib import pyplot as plt

x = range(2,5)  # 【2,3,4】
y = [1,3,2]

plt.plot(x,y)
plt.show()

知识点

matplotlib 库
pyplot 模块
plot 绘制折线图的方法
show 显示折线图的方法

图片的尺寸可以调整吗?

设置图片的大小 figure

figure(figsize=(宽,高),dpi=80)

ad7ad9c3c22a006e9a3cb4e95d106f0b.png
from matplotlib import pyplot as plt

x = [1, 2, 3]
y = [10, 30, 26]

plt.figure(figsize=(20, 8), dpi=80)
plt.plot(x, y)
plt.show()

绘好的图可以保存吗?

保存绘图 savefig

savefig(图片路径)
from matplotlib import pyplot as plt

x = [1, 2, 3]
y = [10, 30, 26]

plt.figure(figsize=(20, 8), dpi=80)
plt.plot(x, y)
plt.show()
plt.savefig('ze.png')

效果

会保存一个图片文件

ze.png

用pycharm看图不方便

打开并弹出指定的图片

from PIL import Image
image = Image.open('plt.png')
image.show()

图片的x与y的刻度不是想要的

自定义刻度 xticks yticks

xticks(数据)
yticks(数据)

注意

数据,参数是刻度显示的数值容器

使用前

5c5aad2db804e4c7498e87be1130e091.png

使用后

97c97e1c9a3578daf603d45fc7c5874f.png

代码

from matplotlib import pyplot as plt

x = [1, 2, 3]
y = [10, 30, 26]

plt.figure(figsize=(20, 8), dpi=80)
plt.xticks(x)
plt.yticks(y)
plt.plot(x, y)
plt.savefig('ze.png')


from PIL import Image
image = Image.open('ze.png')
image.show()

其它情况

刻度数据与实际值,偏差比较大的情况

62420682dccf3581096f7ea076bec6c5.png

ab84f773e80520ceb9a5c02fb34cf965.png

刻度可以不要只显示数字吗?

自定义刻度内容

xticks(刻度列表,描述列表)
yticks(刻度列表,描述列表)

效果

808ca2c069ede290c60db202b11d0366.png

关键

plt.xticks([1, 2.2, 3], ["no-1", "no-2", "haha_no_3"])

全代码

from matplotlib import pyplot as plt

x = [1, 2, 3]
y = [10, 30, 26]

plt.figure(figsize=(20, 8), dpi=80)
plt.xticks([1, 2.2, 3], ["no-1", "no-2", "haha_no_3"])
plt.yticks(y)
plt.plot(x, y)
plt.savefig('ze.png')

from PIL import Image

image = Image.open('ze.png')
image.show()

但是

a14c3f08eac3bac04823ac4d5f388b02.png

中文存在问题

同时控制台报错

C:ProgramDataAnaconda3python.exe G:/untitled6/00-matplolib/01-认识.py
C:ProgramDataAnaconda3libsite-packagesmatplotlibbackendsbackend_agg.py:211: RuntimeWarning: Glyph 31532 missing from current font.
  font.set_text(s, 0.0, flags=flags)
C:ProgramDataAnaconda3libsite-packagesmatplotlibbackendsbackend_agg.py:211: RuntimeWarning: Glyph 20010 missing from current font.
  font.set_text(s, 0.0, flags=flags)
C:ProgramDataAnaconda3libsite-packagesmatplotlibbackendsbackend_agg.py:211: RuntimeWarning: Glyph 22079 missing from current font.
  font.set_text(s, 0.0, flags=flags)
C:ProgramDataAnaconda3libsite-packagesmatplotlibbackendsbackend_agg.py:180: RuntimeWarning: Glyph 31532 missing from current font.
  font.set_text(s, 0, flags=flags)
C:ProgramDataAnaconda3libsite-packagesmatplotlibbackendsbackend_agg.py:180: RuntimeWarning: Glyph 20010 missing from current font.
  font.set_text(s, 0, flags=flags)
C:ProgramDataAnaconda3libsite-packagesmatplotlibbackendsbackend_agg.py:180: RuntimeWarning: Glyph 22079 missing from current font.
  font.set_text(s, 0, flags=flags)

Process finished with exit code 0

我想让刻度显示为中文?

中文显示法一 rcParams

参考文档

https://blog.csdn.net/u010472607/article/details/82789887​blog.csdn.net

主要的

from matplotlib import pyplot as plt

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

效果

55f5752f16c40d29ca1c831523c57394.png

代码

from matplotlib import pyplot as plt

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

x = [1, 2, 3]
y = [10, 30, 26]

plt.figure(figsize=(20, 8), dpi=80)
plt.xticks([1, 2.2, 3], ["第1个","第2个","嘿嘿3"])
plt.yticks(y)
plt.plot(x, y)
plt.savefig('ze.png')

from PIL import Image

image = Image.open('ze.png')
image.show()

中文显示办法二 font_manager

1,创建字体对象

2,显示中文的地方,传入字体对象

# 导入字体的模块
from matplotlib import font_manager

# 实例字体对象
font = font_manager.FontProperties(fname=r'C:WindowsFontsmsyhbd.ttc')
plt.xticks(x,x_tick_labels,fontproperties=font)

效果

6317c27ba7beed671ff37ce45d8d007a.png

代码

from matplotlib import pyplot as plt

# 导入字体的模块
from matplotlib import font_manager

# 实例字体对象
font = font_manager.FontProperties(fname=r'C:WindowsFontsmsyhbd.ttc')

x = [1, 2, 3]
y = [10, 30, 26]

plt.figure(figsize=(20, 8), dpi=80)
plt.xticks([1, 2.2, 3], ["第1个","第2个","嘿嘿3"], fontproperties=font)
plt.yticks(y)
plt.plot(x, y)
plt.savefig('ze.png')

from PIL import Image

image = Image.open('ze.png')
image.show()

刻度的文字只能横着吗?

刻度文字角度调整 rotation

plt.xticks(刻度数据,rotation=角度)

效果

266fa942a50bd24142cd8199a0c8a255.png

代码

from matplotlib import pyplot as plt

# 导入字体的模块
from matplotlib import font_manager

# 实例字体对象
font = font_manager.FontProperties(fname=r'C:WindowsFontsmsyhbd.ttc')

x = [1, 2, 3]
y = [10, 30, 26]

plt.figure(figsize=(20, 8), dpi=80)
plt.xticks([1, 2.2, 3], ["第1个","第2个","嘿嘿3"], fontproperties=font, rotation=60)
plt.yticks(y)
plt.plot(x, y)
plt.savefig('ze.png')

from PIL import Image

image = Image.open('ze.png')
image.show()

线条是什么意思?横坐标,纵坐标是个什么?

给x与y座标定义标记 给图画定义名称 xlabel ylabel title

效果,中文乱码了

40036cb2e69bafbd91920882225c6bc1.png

使用万能解决方案

7f815abacbd220ae582fdfc7d88e2bbc.png

代码

from matplotlib import pyplot as plt

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

x = [1, 2, 3]
y = [10, 30, 26]

plt.figure(figsize=(20, 8), dpi=80)
plt.xticks([1, 2.2, 3], ["第1个","第2个","嘿嘿3"], rotation=60)
plt.yticks(y)

plt.xlabel('x坐标')
plt.ylabel('y坐标')
plt.title('我的mmatplolib练习')

plt.plot(x, y)
plt.savefig('ze.png')

from PIL import Image

image = Image.open('ze.png')
image.show()

如果是使用font_manager方式来解决中文问题

在xlabel中添加字体,例如

plt.xlabel("第几局",fontproperties=font)
plt.ylabel("数据",fontproperties=font)
plt.title("折线图测试图",fontproperties=font)

fe0ee048799477b90e9b08479eaa1e40.png

代码

from matplotlib import pyplot as plt
from matplotlib import font_manager

# 编数据
import random
x = range(1,11)
y = [random.randint(1,10) for i in x]
# 定义字体
font = font_manager.FontProperties(fname=r'C:WindowsFontsmsyhbd.ttc')
# 绘制数据
plt.figure(figsize=(20,8), dpi=80)
plt.plot(x,y)
# 刻度
x_tick_labels = [f'编号{i}' for i in x]
plt.xticks(x,x_tick_labels,rotation=90,fontproperties=font)
# 标记
plt.xlabel("第几局",fontproperties=font)
plt.ylabel("数据",fontproperties=font)
plt.title("折线图测试图",fontproperties=font)
# 保存
plt.savefig('plt.png')
# 打开图片
from PIL import Image
image = Image.open('plt.png')
image.show()

看不清交叉点

显示网格 grip

效果

0c5be6c3469d74397341b74a190022cf.png

网格颜色太深了,淡一点

设置网络的透明度

效果

6fe1d8353272700d1ec3294f38dfea57.png

代码

from matplotlib import pyplot as plt
from matplotlib import font_manager

# 编数据
import random
x = range(1,11)
y = [random.randint(1,10) for i in x]
# 定义字体
font = font_manager.FontProperties(fname=r'C:WindowsFontsmsyhbd.ttc')
# 绘制数据
plt.figure(figsize=(20,8), dpi=80)
plt.plot(x,y)
# 刻度
x_tick_labels = [f'编号{i}' for i in x]
plt.xticks(x,x_tick_labels,rotation=90,fontproperties=font)
# 标记
plt.xlabel("第几局",fontproperties=font)
plt.ylabel("数据",fontproperties=font)
plt.title("折线图测试图",fontproperties=font)
plt.grid(alpha=0.2)
# 保存
plt.savefig('plt.png')
# 打开图片
from PIL import Image
image = Image.open('plt.png')
image.show()

两个或者多个折线图进行数据值的pk效果

多个折线图的绘制

效果

225801dcdd2799410002289b76fd7292.png

代码

from matplotlib import pyplot as plt
from matplotlib import font_manager

# 编数据
import random
x = range(1,11)
y = [random.randint(1,10) for i in x]
y2 = [random.randint(1,10) for i in x]
# 定义字体
font = font_manager.FontProperties(fname=r'C:WindowsFontsmsyhbd.ttc')
# 绘制数据
plt.figure(figsize=(20,8), dpi=80)
plt.plot(x,y)
plt.plot(x,y2)
# 刻度
x_tick_labels = [f'编号{i}' for i in x]
plt.xticks(x,x_tick_labels,rotation=90,fontproperties=font)
# 标记
plt.xlabel("第几局",fontproperties=font)
plt.ylabel("数据",fontproperties=font)
plt.title("折线图测试图",fontproperties=font)
plt.grid(alpha=0.2)
# 保存
plt.savefig('plt.png')
# 打开图片
from PIL import Image
image = Image.open('plt.png')
image.show()

两个线条,哪个是哪个?都分不清楚

给折线添加标记 plot label

plt.plot(x,y,label='x线条')
plt.plot(x,y2, label='y线条')
plt.legend(prop=字体对象)   # 可试试万能中文方案?

效果

a3043bf219551fc1b7d879984085d087.png
  from matplotlib import pyplot as plt
from matplotlib import font_manager

# 编数据
import random
x = range(1,11)
y = [random.randint(1,10) for i in x]
y2 = [random.randint(1,10) for i in x]
# 定义字体
font = font_manager.FontProperties(fname=r'C:WindowsFontsmsyhbd.ttc')
# 绘制数据
plt.figure(figsize=(20,8), dpi=80)
plt.plot(x,y,label='x线条')
plt.plot(x,y2, label='y线条')
plt.legend(prop=font)
# 刻度
x_tick_labels = [f'编号{i}' for i in x]
plt.xticks(x,x_tick_labels,rotation=90,fontproperties=font)
# 标记
plt.xlabel("第几局",fontproperties=font)
plt.ylabel("数据",fontproperties=font)
plt.title("折线图测试图",fontproperties=font)
plt.grid(alpha=0.2)
# 保存
plt.savefig('plt.png')
# 打开图片
from PIL import Image
image = Image.open('plt.png')
image.show()

线条标记不要放在右上角

控制线条标记的位置 legend loc

plt.legend(prop=font, loc="upper left")

fa014dc944257446caf23f8453c68fc7.png

效果

3ade8075fc4b1edb415a5a5909de14eb.png

使用万能字体解决方案,中文更简洁

from matplotlib import pyplot as plt
from matplotlib import font_manager


# 编数据
import random
x = range(1,11)
y = [random.randint(1,10) for i in x]
y2 = [random.randint(1,10) for i in x]
# 设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

# 绘制数据
plt.figure(figsize=(20,8), dpi=80)
plt.plot(x,y,label='x线条')
plt.plot(x,y2, label='y线条')
plt.legend(loc="upper left")
# 刻度
x_tick_labels = [f'编号{i}' for i in x]
plt.xticks(x,x_tick_labels,rotation=90)
# 标记
plt.xlabel("第几局")
plt.ylabel("数据")
plt.title("折线图测试图")
plt.grid(alpha=0.2)
# 保存
plt.savefig('plt.png')
# 打开图片
from PIL import Image
image = Image.open('plt.png')
image.show()

想要改变线条的颜色

自定义线条颜色 plot color

plt.plot(x,y2, label='y线条', color='yellow')

颜色可以有的给值方式

49070ef412696d33b02ee9d8da8e11b2.png

效果

2aed0bdd3b8afb7f8d65dcd50b769f41.png

代码

from matplotlib import pyplot as plt
from matplotlib import font_manager


# 编数据
import random
x = range(1,11)
y = [random.randint(1,10) for i in x]
y2 = [random.randint(1,10) for i in x]
# 设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

# 绘制数据
plt.figure(figsize=(20,8), dpi=80)
plt.plot(x,y,label='x线条', color='blue')
plt.plot(x,y2, label='y线条', color='yellow')
plt.legend(loc="upper left")
# 刻度
x_tick_labels = [f'编号{i}' for i in x]
plt.xticks(x,x_tick_labels,rotation=90)
# 标记
plt.xlabel("第几局")
plt.ylabel("数据")
plt.title("折线图测试图")
plt.grid(alpha=0.2)
# 保存
plt.savefig('plt.png')
# 打开图片
from PIL import Image
image = Image.open('plt.png')
image.show()

可以有其它的线条形态吗?

自定义线条形态 plot linestyle

plt.plot(xlinestyle='--')

1c33ea857b9b63dcc709e94633090f2f.png

效果

2780344225b5c073e8b6927a1fae00f8.png

代码

from matplotlib import pyplot as plt
from matplotlib import font_manager


# 编数据
import random
x = range(1,11)
y = [random.randint(1,10) for i in x]
y2 = [random.randint(1,10) for i in x]
# 设置字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

# 绘制数据
plt.figure(figsize=(20,8), dpi=80)
plt.plot(x,y,label='x线条', color='blue', linestyle=':')
plt.plot(x,y2, label='y线条', color='yellow', linestyle='--')
plt.legend(loc="upper left")
# 刻度
x_tick_labels = [f'编号{i}' for i in x]
plt.xticks(x,x_tick_labels,rotation=90)
# 标记
plt.xlabel("第几局")
plt.ylabel("数据")
plt.title("折线图测试图")
plt.grid(alpha=0.2)
# 保存
plt.savefig('plt.png')
# 打开图片
from PIL import Image
image = Image.open('plt.png')
image.show()

其它可绘制的图形

详情可见官网

Gallery - Matplotlib 3.1.1 documentation​matplotlib.org
f099ccc78464a944fe3903456e16a55c.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值