1.图表样式的概述: 1.1 默认图表样式 matplotlib在绘图的过程中会读取存储在本地的配置文件matplotlibre,通过matplotlibrc文件中的缺省配置信息指定图表元素的默认样式,完成图表元素样式的初始设置,不需要开发人员逐一设置便可使用。 matplotlibrc文件包含众多图表元素的配置项,可以通过rc_params()函数查看全部的配置项。 所有的配置项按作用对象的不同主要分为10种配置要素,包括lines(线条)、patch(图形)、font(字体)、text(文本)、axes(坐标系)、xtick和ytick(刻度)、grid(网格)、legend(图例)、figure(画布)及savefig(保存图像)。 1.2 图表样式修改 matplotlib通过灵活地修改配置项来改变图表的样式,而不必拘泥于系统默认的配置。图表的样式可以通过两种方式进行修改:局部修改和全局修改。下面分别进行介绍。 (1)局部修改: 局部修改的方式是指通过代码动态地修改matplotlib配置项,此方式用于满足程序局部记置 定制的需求。 (2)全局修改: 修改的方式是指直接修改 matplotlilorc文件的配置项,此方式用于满足程序全局定制需求,可以对指定的图表样式进行统一修改,不需要每次在具体的程序中进行单独修改,不仅提高了代码的编写效率,而且减轻了重复操作的负担。 2.使用颜色映射表: matplotlib主要有两种使用颜色映射表的方式:第一种方式是在调用函数或方法绘制图表或添加辅助元素时将颜色映射表传递给关键字参数cmap;第二种方式是直接调用set_cmap示么 函数进行设置。 实例:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.style as ms
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False
x=np.arange(5)
y1=[1200,2400,1800,2200,1600]
y2=[1050,2100,1300,1600,1340]
bar_width=0.6
tick_label=["家庭","小说","心理","科技","儿童"]
fig=plt.figure()
ax=fig.add_subplot(111)
ax.bar(x,y1,bar_width,color="#FFCC00",align="center",label="地区1")
ax.bar(x,y2,bar_width,bottom=y1,color="#B0C4DE",align="center",label="地区2")
ax.set_ylabel("采购数量(本)")
ax.set_xlabel("图书种类")
ax.set_title("41 地区1和地区2对各类图书的采购情况")
ax.grid(True,axis='y',color="gray",alpha=0.2)
ax.set_xticks(x)
ax.set_xticklabels(tick_label)
ax.legend()
3.选择线型: 在matplotlib中,默认的线条类型是实线。当pyplot绘制折线图、显示网格或添加参考线时,可以将线型的取值传递给linestyle或ls参数,以选择其他的线条类型。 实例:
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False
eurcny_2017=np.array([6.8007,6.8007,6.8015,6.8015,6.8060,
6.8060,6.8060,6.8036,6.8025,6.7877,
6.7835,6.7758,6.7700,6.7463,6.7519,
6.7511,6.7511,6.7539,6.7265])
eurcny_2019=np.array([6.5307,6.6005,6.7790,6.8899,6.6900,
6.6128,6.6123,6.6345,6.6765,6.6890,
6.7542,6.7123,6.8564,6.8536,6.8678,
6.5607,6.8635,6.6324,6.668])
date_x=np.array([3,4,5,6,7,8,9,10,11,12,13,14,17,18,19,24,25,26,31])
fig=plt.figure()
ax=fig.add_subplot(111)
ax.plot(date_x,eurcny_2017,color='#006374',linewidth=1,label='2017年7月美元/人民币汇率')
ax.plot(date_x,eurcny_2019,color='#8a2e76',linestyle='--',linewidth=1,label='2019年7月美元/人民币汇率')
ax.set_title('41 2017年7月与2019年7月美元/人民币汇率走势')
ax.set_xlabel('日期')
ax.set_ylabel('汇率')
ax.legend()
plt.show
4.添加数据标记: 在matplotlib中,折线图的线条由数据标记及其之间的连线组成,且默认隐藏数据标记。数据标记一般指代表单个数据的圆点或其他符号等,用于强调数据点的位置,常见于折线图和散点图中。 实例:
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False
sale_a=[2144,4617,7674,6666]
sale_b=[853,1214,2414,4352]
sale_c=[123,234,345,456]
fig=plt.figure()
ax=fig.add_subplot(111)
ax.plot(sale_a,'D-',sale_b,'^:',sale_c,'s--')
ax.grid(alpha=0.3)
ax.set_ylabel('销售额(万元)')
ax.set_xticks(np.arange(len(sale_c)))
ax.set_xticklabels(['第1季度','第2季度','第3季度','第4季度'])
ax.legend(['产品A','产品B','产品C'])
plt.title('41')
plt.show()
5.设置字体: 设置字体样式 在matplotlib中,文本都是text模块的Text类对象,可以通过之前介绍的text0、annotate()、title()等函数进行创建。Text类中提供了一系列设置字体样式的属性,包括字体类别、字体大小、字体风格、字体角度等。 例如:
plt.plot([1,2,3],[3,4,5])
plt.text(1.9,3.75,'y=x+2',bbox=dict(facecolor='r'),family='serif',fontsize=18,fontstyle='normal',rotation=-60)
plt.title('41')
实例:
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False
x=np.arange(4,19)
y_max=[23,24,25,26,27,28,29,30,31,32,33,34,35,34,32]
y_min=[16,17,18,17,18,19,20,21,22,19,17,18,20,21,19]
plt.plot(x,y_max,marker='o',label='最高温度')
plt.plot(x,y_min,marker='o',label='最低温度')
x_temp=4
for y_h,y_l in zip(y_max,y_min):
plt.text(x_temp-0.3,y_h+0.7,y_h,family='SimHei',fontsize=8,fontstyle='normal')
plt.text(x_temp-0.3,y_h+0.7,y_l,family='SimHei',fontsize=8,fontstyle='normal')
x_temp+=1
plt.title('41 未来15天最高气温和最低气温的走势')
plt.xlabel('日期')
plt.ylabel('温度($^\circ$C)')
plt.ylim(0,40)
plt.legend()
plt.show()
6.切换主题风格:
import numpy as np
import matplotlib.pyplot as plt
plt.plot([1,2,3],[3,4,5])
plt.plot([1,2,3],[3,4,5],marker='*',markersize=20,markerfacecolor='y')
plt.title('41')
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.style as ms
plt.plot([1,2,3],[3,4,5])
plt.plot([1,2,3],[3,4,5],marker='*',markersize=20,markerfacecolor='r')
plt.title('41')
ms.use('seaborn-dark')
7.填充区域:
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,8*np.pi,1000)
sin_y=np.sin(x)
cos_y=np.cos(1.5*x/np.pi)
plt.plot(x,sin_y)
plt.plot(x,cos_y)
plt.fill_between(x,cos_y,sin_y,cos_y < sin_y, color='dodgerblue',alpha=0.5)
plt.fill_between(x,cos_y,sin_y,cos_y > sin_y, color='orangered',alpha=0.5)
plt.title('41')
实例:
def koch_snowflake(order,scale=10):
def _koch_snowflake_complex(order):
if order==0:
angles=np.array([0,120,240])+90
return scale / np.sqrt(3) * np.exp(np.deg2rad(angles) * 1j)
else:
ZR=0.5-0.5j * np.sqrt(3) / 3
p1=_koch_snowflake_complex(order - 1)
p2=np.roll(p1,shift=-1)
dp=p2-p1
new_points=np.empty(len(p1) * 4,dtype=np.complex128)
new_points[::4]=p1
new_points[1::4]=p1+dp/3
new_points[2::4]=p1+dp*ZR
new_points[3::4]=p1+dp/3*2
return new_points
points=_koch_snowflake_complex(order)
x,y=points.real,points.imag
return x,y
x,y=koch_snowflake(order=2)
fig=plt.figure()
ax=fig.add_subplot(111)
ax.fill(x,y,facecolor='lightsalmon',edgecolor='orangered',linewidth=3)
plt.title('41')
plt.show()
小结: 本文主要介绍了图表样式的美化,包括图表样式概述、使用颜色、选择线型、添加数据标记、设置字体、切换主题风格和填充区域。通过学习本章的内容,希望读者可以明确图表美化的意义,并能够采用适当的方式进行图表美化。
|