python数据可视化第四章图标样式的美化

一、图标样式的概述
matplotlib在绘图的过程中会读取储存在本地的的配置文件matplotlibrc,通过matplotlibrc文件中的缺省配置信息指定图表元素的默认样式,完成图表元素的初始设置,不需要开发人员逐一设置便可使用。
matplotlibrc文件包含众多图表元素的配置项,可以通过rc_params()函数查看全部的配置项,实例代码如下:

import matplotlib
matplotlib.rc_params()

由上可知,rc_parmas()函数返回一个RcParmas对象。RcParmas对象是一个字典对象,其中字典的键是由配置要素及其属性组成的配置项,值为配置项的默认值。
二、图标样式的修改
matplotlib通过灵活的修改配置项来改变图表的样式,而不比拘泥于系统默认的设置,图表的样式可以通过两种方式进行修改,局部修改和全局修改。
三、使用颜色
在数据可视化中,颜色通常被用于编码数据的分类或定序属性,图表使用颜色时应遵循一定的基本规则,既要避免使用过多的颜色,又要避免随意使用颜色,否则会直接影响可视化的效果且不易让人理解,合理规则应是:
1、广泛的色调和亮度范围。
2、遵循自然的颜色模式;
3、尽量使用渐变颜色,而不是选择一组静态颜色。
四、选择线型
图表中的每个西那条军具有不同的含义,一般可以通过设置颜色,宽度,类型来区分其中,类型是区分线条的 常见方式之一。matplotlib内置了4种线条类型,
五、添加数据标记
在matplotlib中,折线图的线条由数据标记及其之间的连接组成,且默认隐藏数据标记,数据标记一般指代表单个数据的圆点或其他标记符号等,用于强调数据点的位置,常见于折线图和散点图。
六、设置字体
合理使用字体的规范:
1、英文注释文本均使用Arial、Helvetica或Times New Roman字体。
2、中文注释文本均使用宋体或黑体,其中正文使用宋体,标题使用黑体;
3、图表注释文本的最佳字体大小为8磅;
4、字体的颜色与背景具有强对比度。
七、切换主题风格
matplotlib.style模块中内置了一些图表的主题风格,通过切换不同的主题风格以确保用户的不同需求。所有主题风格都村粗与matplotlib配置文件下的目录下;可以通过访问available变量查看所有的可用主题风格。
八、填充区域
matplotlib中提供了多个函数用于填充多边形或区域,分别为fill(),fill_between()\和fill_betweenx()。其中fill()函数用于填充多边形;fill_between()、fill_betweenx()函数分别用于填充;想条水平曲线或者垂直曲线之间的区域。

import matplotlib
matplotlib.matplotlib_fname()

在这里插入图片描述

for name,hex in matplotlib.colors.cnames.items():
    print(name,hex)

在这里插入图片描述

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("2020080603042")
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("2020080603042")
plt.show()

在这里插入图片描述

plt.plot([1,2,3],[3,4,5],marker='*',markersize=20,markerfacecolor='#FF6900')

在这里插入图片描述

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,'s-',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("2020080603042")
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('未来15天最高气温和最低气温的走势2020080603042')
plt.xlabel('日期')
plt.ylabel('温度($^\circ$C)')
plt.ylim(0,40)
plt.legend()
plt.show()

在这里插入图片描述

import matplotlib.style as ms
print(ms.available)

在这里插入图片描述

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='#00FF11',alpha=1)
plt.fill_between(x,cos_y,sin_y,cos_y>sin_y,color='#FFE400',alpha=1)

在这里插入图片描述

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('2020080603042')
plt.show()

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值