第四章 图表样式的美化
这节课主要学习了图表样式的美化,包括图表样式的概括、使用颜色选择线型、添加数据标记、设置字体、切换主题风格和填充区域。 下面是本节课的一些练习:
import numpy as np
import matplotlib.pyplot as plt
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("地区1和地区2对各类图书的采集情况")
ax.grid(True,axis='y',color="gray",alpha=0.2)
ax.set_xticks(x)
ax.set_xticklabels(tick_label)
ax.legend()
plt.title("2020080603048")
plt.show()
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False
eurcny_2017=np.array([6.8007,6.8007,6.8015,6.8060,6.8060,
6.8060,6.8060,6.8036,6.8077,6.7877,
6.8035,6.7758,6.7700,6.7463,6.7519,
6.7511,6.7511,6.7539,6.7265])
eurcny_2019=np.array([6.8640,6.8705,6.8679,6.8679,6.8697,
6.8881,6.8853,6.8856,6.8677,6.8662,
6.8662,6.8662,6.8827,6.8761,6.8635,
6.8860,6.8737,6.8796,6.8841])
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=2,label='2017年7月美元/人民币汇率')
ax.plot(date_x,eurcny_2019,color='#8a2e76',linestyle='--',linewidth=2,label='2019年7月美元/人民币汇率')
ax.set_title('2017年7月与2019年7月美元/人民币汇率走势')
ax.set_xlabel('日期')
ax.set_ylabel('汇率')
ax.legend()
plt.title("2020080603048")
plt.show()
plt.plot([1,2,3],[3,4,5],marker='*',markersize=20,markerfacecolor='#0000FF')
plt.title("2020080603048")
plt.show()
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False
sale_a=[2144,4617,7674,6666]
sale_b=[853,1214,2414,4409]
sale_c=[153,155,292,680]
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(['第一季度','第二季度','第三季度','第四季度'])
ax.legend(['产品A','产品B','产品C'])
plt.title("2020080603048")
plt.show()
plt.plot([1,2,3],[3,4,5])
plt.text(1.9,3.75,'y=x+2',bbox=dict(facecolor='#FF0000'),family='serif',fontsize=18,fontstyle='normal',rotation=-60)
plt.title("2020080603048")
plt.show()
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False
x=np.arange(4,19)
y_max=[32,33,34,33,31,30,29,30,29,26,23,21,25,31,32]
y_min=[19,19,18,17,19,20,21,22,16,17,15,14,16,15,16]
plt.plot(x,y_max,marker='o',label='最高温度')
plt.plot(x,y_min,marker='o',label='最低温度')
x_temp=4
for y_h,y_1 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_1+0.7,y_1,family='SimHei',fontsize=8,fontstyle='normal')
x_temp+=1
plt.title('2020080603048未来15天最高气温和最低气温的走势')
plt.xlabel('日期')
plt.ylabel('温度($^\circ$C)')
plt.ylim(0,40)
plt.legend()
plt.show()
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)/2
plt.plot(x,sin_y)
plt.plot(x,cos_y)
plt.fill_between(x,cos_y,sin_y,cos_y<sin_y,color='#F5FFFA',alpha=0.5)
plt.fill_between(x,cos_y,sin_y,cos_y>sin_y,color='#FFE4E1',alpha=0.5)
plt.title("2020080603048")
plt.show()
import numpy as np
import matplotlib.pyplot as plt
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("2020080603048")
plt.show()
|