Matplotlib 绘制基本图形

plt.plot只有一个参数时,参数类型必须为一维列表或数组,如:plt.plot(a)  ,此时将a中的值作为y坐标输出x是列表的索引,如0,1,2,...

为图加x轴、y轴、标题、网格

plt.xlabel('this is axis x')  # 增加x轴描述

plt.ylabel('this is axis y')  # 增加y轴描述

plt.title('this is an example') # 增加标题

plt.grid('True')   #增加网格

图片保存成文件:

plt.savefig(文件名,dpi=600) dpi:每一英寸空间中包含的点数,点数越多,图像质量越好。

默认生成的图像格式为png格式。

指定xy轴范围:

1 折线图

语法:plt.plot(x, y, format_string, **kwargs)  其中:x,y是坐标;format_string:曲线风格设置;
**kwargs
:更多组曲线的参数设置

1)format_string包括线的颜色,具体取值如下:

 

2)format_string包括线的风格,具体取值如下:

 

3)format_string包括线的标记类型,具体取值如下:

     

(4)示例:

import  matplotlib.pyplot as plt
import  numpy as np
a=np.arange(0,10,0.5)
plt.plot(a,a*a,'r--o',a,a*3,'b-+')#同时画出两组折线
plt.show()

format_string参数由前面介绍的颜色、风格、标记字符组成的字符串,前后顺序无所谓

 

如果图例在图框内挡住了图内折线图,可以使用plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))让图例显示在图像框的右边中间位置,如果不设置x轴和y轴刻度,Matplotlib会根据数据的范围和分布自动选择刻度值,通常是为了使图表在视觉上更加清晰和易于理解。

import matplotlib.pyplot as plt
import matplotlib

# 给排水韧性得分数据
years = [2018, 2019, 2020, 2021, 2022]

# 给排水韧性得分数据
years = [2018, 2019, 2020, 2021, 2022]
beijing_scores = [
   0.7015249,
0.7050914,
0.6975382,
0.6926983,
0.6853141

]

tianjin_scores = [
    0.5347513,
0.52457875,
0.52163833,
0.52692574,
0.51883376

]


shijiazhuang_scores=[0.39309645,
0.3396231,
0.33959764,
0.3378727,
0.33196145

]

tangshan_scores=[0.3645677,
0.3489927,
0.35373002,
0.36235777,
0.37836656

 
]

qinghuangdao_scores=[0.27253038,
0.27180696,
0.27120438,
0.27080676,
0.27056554


]

handan_scores=[0.27918392,
0.2741323,
0.27979,
0.2771336,
0.2819476


]

xingtai_scores=[0.27041742,
0.27190825,
0.27921104,
0.27195877,
0.27921104


]


baoding_scores=[0.271643,
0.29644614,
0.2727402,
0.27024028,
0.27097106


]


zhangjiakou_scores=[0.27091658,
0.27064,
0.27050504,
0.2704541,
0.27113265


]

chengde_scores=[0.27214766,
0.27139995,
0.2711886,
0.27160594,
0.27190205


]

cangzhou_scores=[0.27154785,
0.27062717,
0.2711461,
0.27204153,
0.2723538


]


langfang_scores=[0.2718553,
0.2707805,
0.27094406,
0.2708508,
0.27129725


]


hengshui_scores=[0.27027622,
0.27028304,
0.27090845,
0.27102357,
0.27094215


]

matplotlib.rcParams['font.family']=['SimHei']
# 创建折线图
plt.figure(figsize=(4, 4))  # 设置图形大小
plt.plot(years, beijing_scores, marker='o',label='北京',linewidth=1)  # 绘制折线图,'o'表示点的形状
plt.plot(years, tianjin_scores, label='天津', marker='x', color='r',linewidth=1)
plt.plot(years, shijiazhuang_scores, label='石家庄',  marker='s', color='k',linewidth=1)
plt.plot(years, tangshan_scores, label='唐山',  marker='^', color='g',linewidth=1)
plt.plot(years, qinghuangdao_scores, label='秦皇岛',   marker='p', color='y',linewidth=1)
plt.plot(years, handan_scores, label='邯郸', marker='s', color='r',linewidth=1)
plt.plot(years, xingtai_scores, label='邢台', marker='D', color='m',linewidth=1)
plt.plot(years, baoding_scores, label='保定',  marker='*', color='orange',linewidth=1)
plt.plot(years, zhangjiakou_scores, label='张家口', marker='p', color='k',linewidth=1)
plt.plot(years, chengde_scores, label='承德',  marker='^', color='brown',linewidth=1)
plt.plot(years, cangzhou_scores, label='沧州', marker='s', color='green',linewidth=1)
plt.plot(years, langfang_scores, label='廊坊',  marker='h', color='c',linewidth=1)
plt.plot(years, hengshui_scores, label='衡水',  marker='s', color='gray',linewidth=1)
# 添加标题和标签
# plt.title('给排水韧性得分')
plt.xlabel('年份',fontsize=12)
plt.ylabel('给排水韧性得分',fontsize=12)
#plt.yticks([0, 0.2, 0.4, 0.6,  0.8, 1])
plt.xticks([2018, 2019, 2020, 2021,  2022])
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.savefig('resilience_scores.png', dpi=800, format='png', bbox_inches='tight')

# 显示图形
plt.show()

2 柱状图

plt.bar(x, height, width=0.8, bottom=None, \*, align='center', data=None, \*\*kwargs)

import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei' # 添加中文字体
x_np=[0,1.5,3,4.5]
x=np.array(x_np)
xticks=['Accuracy','F1','Precision','Recall']

svm=[0.9354,0.8835,0.9143,0.8571]
dt=[0.8968,0.8636,0.8235,0.9286]
rf=[0.8889,0.8650,0.8254,0.9101]
nb=[0.7548,0.6695,0.6768,0.6623]
mlp=[0.8344,0.7257,0.8168,0.6552]
plt.bar(x - 0.2, svm, width=0.2, label='SVM')
plt.bar(x, rf, width=0.2, label='RF')
plt.bar(x + 0.2, dt, width=0.2, label='DT')
plt.bar(x + 0.4, nb, width=0.2, label='NB')
plt.bar(x + 0.6, mlp, width=0.2, label='MLP')

plt.xticks(x, xticks)
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.title('不同分类器性能对比')
plt.xlabel('指标',fontsize=14)
plt.ylabel('值',fontsize=14)
# 显示图形
plt.show()

3  子图

plt.subplot(a,b,i生成一个a行,b列的绘图区,其后绘制的图像绘制到第i区(逗号可以省略)

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,20)

plt.subplot(2,3,1)# 也可以写成 plt.subplot(231),以下同
plt.plot(x,np.exp(x))

plt.subplot(2,3,2)
plt.plot(x,-x**2-2*x)

plt.subplot(2,3,3)
plt.plot(x,np.log(x))

plt.subplot(2,3,4)
plt.plot(x,np.sin(x))


plt.subplot(2,3,5)
plt.plot(x,np.sin(x)+np.cos(x))

plt.subplot(2,3,6)
plt.plot(x,np.sin(x)+np.cos(x**2))

4  饼状图

语法:matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, \*, data=None)

import matplotlib.pyplot as plt
import matplotlib 
matplotlib.rcParams['font.family']='SimHei' # 添加中文字体
label=['教授','副教授','讲师','助教']  # 饼状图中每个分块的类别
size=[10,40,35,15]  #每个类别所占的百分比数
explode=[0,0,0.1,0] #每个类别突出显示程度
plt.pie(size,labels=label,explode=explode,shadow=True, autopct='%0.1f%%')
plt.axis('equal') # 设置坐标轴等比例
plt.legend()   # 增加图例
plt.show()

其中:autopct='%0.1f%% 表示在饼图中显示数据的比例,保留一位小数。shadow=True表示为饼图添加阴影

5  散点图

语法:plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, data=None, **kwargs)

import numpy as np
import matplotlib.pyplot as plt 
x1=np.random.randn(100)
y1=np.random.randn(100)

x2=np.random.randn(100)
y2=np.random.randn(100)
plt.scatter(x1,y1,marker='o',color='red')
plt.scatter(x2,y2,marker='+',color='blue')
plt.legend(['boy','girl'])
plt.show()

6  中文显示问题

(1)第一种方法:全局修改

matplotlib.rcParams['font.family']='SimHei'

rcParams自定义图形的各种默认属性,称之为rc配置或rc参数。通过rc参数可以修改默认的属性,包括窗体大小、每英寸的点数、线条宽度、颜色、样式、坐标轴、坐标和网络属性、文本、字体等。可以选择的常用字体有'SimHei':中文黑体   'Kaiti':  中文楷体  'LiSu' :中文隶书  'Fangsong' :中文仿宋 

这种设置方法会修改程序中所有的图

import matplotlib.pyplot as plt

import matplotlib

matplotlib.rcParams['font.family']=['SimHei']

plt.plot([1,1,6,4,5])

plt.title('画折线的例子')  # 加标题描述

plt.xlabel('这是x轴')     # 为x轴加文字描述

plt.ylabel('这是y轴')    # 为y轴加文字描述

(2)第二种方法:在有中文输入的地方增加fontproperties='SimHei'的设置。

     plt.title('这是标题',fontproperties='SimHei',FontSize=20)

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值