文章目录
*
– 图表样式及属性简介
–
+ 1、线linestyle和点marker的样式
+ 2、标题 plt.title()
+ 3、轴标签 plt.xlabel() plt.ylabel()
+ 4、轴范围 (上限下限) plt.xlim() plt.ylim()
+ 5、轴刻度 plt.xticks() plt.yticks()
+ 6、图例 plt.legend()
+ 7、四个边框 ax.spines[ ].set_color()
+ 8、数据标签 plt.text()
+ 9、带箭头的显示文本 plt.annotate()
– 一、折线图 plt.plot()
–
+ 1.1、参数讲解
+ 1.2、一条折线
+ 1.3、多条折线
+ 1.4、水平线与垂直线
– 二、散点图 plt.scatter()
–
+ 2.1、参数
+ 2.2、散点图
+ 2.3、气泡图
– 三、饼图 plt.pie()
–
+ 3.1、参数
+ 3.2、饼图
+ 3.3、改变饼图中的字体大小
+ 3.4、环形图
– 四、条形图(柱状图) plt.bar()
–
+ 4.1、参数
+ 4.2、单条形图
+ 4.3、横向条形图 plt.barh()
+ 4.4、多标签条形图 — 左右分布图
+ 4.5、多标签条形图 — 叠堆图
– 五、直方图 plt.hist()
– 六、箱线图 plt.boxplot ()
- Matplotlib是一个Python 2D绘图库,Matplotlib试图让简单的事情变得更简单,让无法实现的事情变得可能实现。 只需几行代码即可生成 图,直方图,条形图,散点图等。支持python、numpy、pandas基本数据结构,运营高效且有较丰富的图表库。可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法。能将数据进行可视化,更直观的呈现;使数据更加客观、更具说服力。
- 本博客主要展示基本的常见图表制作及图表样式修改,图表:折线图、饼图、散点图、条形图、直方图、热力图、箱线图。
- 下面这张图向我们展示了一张图表当中的所有可以设置的属性,以此美化图表。借着折线图的制作详细展示这些属性的修改。
- matplotlib官网:👉点这里
; 图表样式及属性简介
- 小栗子
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
x = [1.3,2.5,3.7,5.7,8.9,9.5]
y = [2.5,3.5,4.5,6.8,7.9,9.9]
plt.figure(figsize=(10,4))
plt.plot(x,
y,
color='c',
linewidth=5,
linestyle='--',
marker='o',
markeredgecolor='red',
markeredgewidth=1,
markersize=10,
label='我是图例'
)
plt.title('我是标题',fontsize=20,color='red',loc='left')
plt.xlabel('我是x轴',fontsize=15,color='blue',labelpad=-25,position=(1.05,0))
plt.ylabel('我是y轴',fontsize=15,color='blue',labelpad=10,position=(0,0.9))
plt.xticks(x,[f'x_{i}' for i in range(len(x))],size=12)
plt.yticks(y,["%.2f" %i for i in y],size=11)
plt.ylim([0,15])
plt.legend(loc='upper center')
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
for x,y in zip(x,y):
plt.text(x-0.1,y+0.5,y)
plt.annotate('我在学习python画图呢!',xytext = (6,4),xy = (9,10), arrowprops = dict(facecolor = 'blue', shrink = 0.1))
plt.scatter(9,10,s=100,c='m')
plt.show()
1、线linestyle和点marker的样式
线样式描述’-‘实线样式’- -‘短横线样式’-.’点划线样式’:’虚线样式 点样式描述点样式描述’1’下箭头标记’.’点标记’2’上箭头标记’o’圆标记’3’左箭头标记’x’X 标记’4’右箭头标记’^’正三角标记’s’正方形标记’v’倒三角标记’p’五边形标记’
2、标题 plt.title()
plt.title(label,
loc='',
fontsize='',
color='',
pad=
)
3、轴标签 plt.xlabel() plt.ylabel()
plt.xlabel(label,
fontsize=15,
color='blue',
labelpad=-25,
position=(1.05,0))
4、轴范围 (上限下限) plt.xlim() plt.ylim()
plt.ylim(y_min,y_max)
5、轴刻度 plt.xticks() plt.yticks()
plt.xticks(ticks=None,
labels=None,
color='')
6、图例 plt.legend()
plt.plot(label)
plt.legend(loc='')
loc位置描述’upper left’左上方’upper right’右上方’lower left’左下方’lower right’右下方’upper center’上正中心’lower center’下正中心’center left’左正中心’center right’右正中心’center’正中心’best’重叠部分最少的最佳位置
7、四个边框 ax.spines[ ].set_color()
ax = plt.gca()
ax.spines['loc'].set_color('color')
8、数据标签 plt.text()
plt.text(x,y,text,fontsize='',color='')
9、带箭头的显示文本 plt.annotate()
plt.annotate(text,
xytext=(),
xy=(),
fontsize=12,
color='red',
arrowprops=dict{facecolor='',shrink=0.1})
一、折线图 plt.plot()
1.1、参数讲解
plt.plot(x,
y,
color='green',
marker='o',
linestyle='dashed',
linewidth=2,
markersize=12,
markeredgecolor='',
markeredgewidth=12,
label='')
1.2、一条折线
x = np.arange(0,10)
y1 = x**2+5*x
y2 = 10*x+5
plt.figure(figsize=(5,3))
plt.plot(x,y1)
plt.show()
1.3、多条折线
plt.figure(figsize=(5,3))
plt.plot(x,y1,'--.',label='y1')
plt.plot(x,y2,':*',label='y2')
plt.legend()
plt.show()
1.4、水平线与垂直线
- 水平线:y是定值,x不定值,传参时x和y的维度必须一致
- 垂直线:x是定值,y不定值,传参时x和y的维度必须一致
plt.plot([5 for i in range(0,10)],range(0,10),c='red')
plt.plot(range(1,10),[5 for i in range(11,20)],c='yellow')
plt.legend(['我是垂直线','我是水平线'])
plt.show()
二、散点图 plt.scatter()
2.1、参数
plt.scatter(x, y,
s=None,
c=None,
marker=None,
cmap=None,
alpha=None,
linewidths=None,
edgecolors=None
)
2.2、散点图
x = np.random.random(20)*10
y = np.random.random(20)*10
plt.scatter(x, y, s=80, marker='o', c='red',alpha=0.7, edgecolors='yellow')
plt.show()
2.3、气泡图
- 气泡图就是将散点图的点根据数值大小变化点的大小(及颜色)
- 参数cmap取值可以参考:这里
x = np.random.random(20)*10
y = np.random.random(20)*10
s = np.arange(100,400,20)
plt.scatter(x, y, s=s,c=y, marker='o', cmap='plasma',alpha=0.7)
plt.show()
三、饼图 plt.pie()
3.1、参数
pie(x,
explode=None,
labels=None,
colors=None,
autopct=None,
pctdistance=0.6,
shadow=False,
labeldistance=1.1,
radius=None,
counterclock=True,
)
3.2、饼图
a = {'shop1':100,'shop2':200,'shop3':300,'shop4':400,'shop5':500,'shop6':600}
plt.pie(a.values(),
radius=1.4,
labels=a.keys(),
labeldistance=1.06,
autopct="%.2f%%",
pctdistance=0.7,
colors=['Indigo','BlueViolet','MediumPurple','MediumSlateBlue','SlateBlue','DarkSlateBlue'],
counterclock=False,
explode=[0,0,0,0.14,0,0.1]
)
plt.show()
3.3、改变饼图中的字体大小
plt.figure(figsize=(4,5))
a = {'shop1':100,'shop2':200,'shop3':300,'shop4':400,'shop5':500,'shop6':600}
patches,l_text,p_text=plt.pie(a.values(),
radius=1.4,
labels=a.keys(),
labeldistance=1.06,
autopct="%.2f%%",
pctdistance=0.7,
colors=['Indigo','BlueViolet','MediumPurple','MediumSlateBlue','SlateBlue','DarkSlateBlue'],
counterclock=True,
explode=[0,0,0,0.14,0,0.1]
)
for t in l_text:
t.set_size(15)
for t in p_text:
t.set_size(12)
plt.show()
3.4、环形图
plt.figure(figsize=(4,5))
a = {'shop1':100,'shop2':200,'shop3':300,'shop4':400,'shop5':500,'shop6':600}
plt.pie(a.values(),
radius=1.4,
labels=a.keys(),
labeldistance=1.06,
autopct="%.2f%%",
pctdistance=0.7,
colors=['Indigo','BlueViolet','MediumPurple','MediumSlateBlue','SlateBlue','DarkSlateBlue'],
counterclock=True
)
plt.pie([1],radius=0.8,colors='w')
plt.show()
四、条形图(柱状图) plt.bar()
4.1、参数
plt.bar(x,
height,
width=0.8,
bottom=None,
color,
edgecolor,
linewidth,
tick_label,
xerr, yerr,
ecolor,
orientation,
4.2、单条形图
shop1 = [100,200,300,450,500]
date = ['06-14','06-15','06-16','06-17','06-18']
plt.figure(figsize=(8,3))
plt.bar(date,shop1)
plt.show()
4.3、横向条形图 plt.barh()
shop1 = [100,200,300,450,500]
date = ['06-14','06-15','06-16','06-17','06-18']
plt.figure(figsize=(8,3))
plt.barh(date,shop1)
plt.show()
4.4、多标签条形图 — 左右分布图
shop1 = [100,200,300,450,500]
shop2 = [70,178,245,356,467]
date = ['06-14','06-15','06-16','06-17','06-18']
plt.figure(figsize=(8,4))
plt.bar(np.arange(5)-0.15,shop1,width=0.3,color='red')
plt.bar(np.arange(5)+0.15,shop2,width=0.3,color='skyblue')
plt.xticks(np.arange(5),date)
plt.legend(['shop1','shop2'],loc='best')
plt.ylim([0,550])
for i,j in enumerate(shop1):
plt.text(i-0.25,j+10,j)
for i,j in enumerate(shop2):
plt.text(i+0.1,j+10,j)
plt.show()
4.5、多标签条形图 — 叠堆图
shop1 = [100,200,300,450,500]
shop2 = [70,178,245,356,467]
shop_sum = np.array(shop1)+np.array(shop2)
date = ['06-14','06-15','06-16','06-17','06-18']
plt.figure(figsize=(8,4))
plt.bar(date,shop1,color='red')
plt.bar(date,shop2,bottom=shop1,color='skyblue')
plt.legend(['shop1','shop2'],loc='best')
for i,j in enumerate(shop1):
plt.text(i,j-60,j)
for i,j in enumerate(shop_sum):
plt.text(i,j-60,shop2[i])
plt.show()
五、直方图 plt.hist()
- 用来计算频次 或 频率
hist(x,
bins=None,
range=None,
density=None,
histtype='bar',
align='mid',
orientation='vertical',
color=None,
label=None
)
np.random.seed(0)
x = np.random.randn(500)*10
plt.figure(figsize=(8,4))
plt.hist(x,bins=20,width=2,align='right',color='red',label='直方图')
plt.legend()
plt.show()
六、箱线图 plt.boxplot ()
boxplot(x,
notch=None,
vert=None,
positions=None,
widths=None,
labels=None,
showbox = True,
showmeans =False,
sym='bs'
)
from sklearn.datasets import load_iris
x = load_iris().data
y = load_iris().target
feature = load_iris().feature_names
target = load_iris().target_names
plt.figure(figsize=(6,3))
plt.boxplot(x,labels=feature,positions=[4,2,3,1],widths=[0.2,0.3,0.4,0.5],showbox=True,showmeans =True,sym='bs')
plt.show()
Original: https://blog.csdn.net/m0_69435474/article/details/125022661
Author: 小磊要努力哟
Title: python可视化工具之matplotlib(1)基本图表
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/765733/
转载文章受原作者版权保护。转载请注明原作者出处!