python画皮卡丘并上色代码,python画皮卡丘代码pillow

本篇文章给大家谈谈怎么用python画一个皮卡丘,以及python画皮卡丘并上色代码,希望对各位有所帮助,不要忘了收藏本站喔。

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

%matplotlib inline

# %cat /Users/chenlinlin/Desktop/通关情况.xlsx|less

matplotlib.pyplot设置语法有几种:

plt.+模块名字,比如plt.xticks()里面传入参数

用axes来设置的方法

fig,ax=plt.subplot(111)

#在ax里面设置ax.set_模块名字

ax.set_title()

绘制的方法

plt.plot()

ax.plot()

关于matplotlib的原理请参考链接,这个文章对了解matplotlib.pyplot的组块很有帮助

我们先读取数据

data=pd.read_excel('/Users/chenlinlin/Desktop/通关情况.xlsx',index_col='姓名', decoding='utf-8')

data.head()

已经成功读取了数据,我们对三列进行汇总统计,画成柱状图

data.sum().plot.bar()

538b5e776405

绘图结果

可以看到我们已经成功画出来了,但还有些问题,比如x轴的tick中文显示不出来,颜色需要改成白色比较显眼,方向变成水平方向,加上x轴和y轴的标题

#我们修改列名为英文

data.columns=['first class', 'Public class', 'Graduation']

data.sum().plot.bar()

plt.title('Activity Vs Number',color='white')

plt.xlabel('Activity',color='white')

plt.ylabel('Number',color='white')

plt.xticks(rotation=0,color='white',backgroundcolor='b')#设置xticks的方向

plt.yticks(color='white')

(array([ 0., 10., 20., 30., 40., 50., 60., 70.]),

)

538b5e776405

绘图结果

字体的设置

关于字体的设置可以参考链接

fig=plt.figure()

ax=fig.add_subplot(111)

data.sum().plot.bar()

plt.title('Activity Vs Number')

plt.xlabel('Activity')

plt.ylabel('Number')

ax.tick_params(direction='out', length=6, width=2, colors='white',

grid_color='b', grid_alpha=0.5)

538b5e776405

绘图结果

也可以对ax进行tick_params的设置使得对x轴或者y轴同时成立或者部分成立

颜色的设置

#我们在这里设置一下颜色

data.sum().plot.bar(color=['lightblue','darkgreen','#eeefff'])

plt.title('Activity Vs Number',color='white')

plt.xlabel('Activity',color='white')

plt.ylabel('Number',color='white')

plt.xticks(rotation=0,color='white',backgroundcolor='b')#设置xticks的方向

plt.yticks(color='white')

(array([ 0., 10., 20., 30., 40., 50., 60., 70.]),

)

538b5e776405

绘图结果

颜色的设置有几种规则:

(关于颜色的设置要参考这个链接.)

按照名字来:

比如light/dark+颜色的英文名,比如'lightblue',就像上面所示。

使用一些简单的记号:

alias

color

‘b’

blue

‘g’

green

‘r’

red

‘c’

cyan

‘m’

magenta

‘y’

yellow

‘k’

black

‘w’

white

from IPython.display import Image

Image('/Users/chenlinlin/Downloads/matplotlib.pyplot常用总结/颜色命名规则.png',width=600)

538b5e776405

颜色规则

data.sum().plot.bar(color=['c','m','#eeefff'])

plt.title('Activity Vs Number',color='white')

plt.xlabel('Activity',color='white')

plt.ylabel('Number',color='white')

plt.xticks(rotation=0,color='white',backgroundcolor='b')#设置xticks的方向

plt.yticks(color='white')

(array([ 0., 10., 20., 30., 40., 50., 60., 70.]),

)

538b5e776405

绘图结果

传入html16进位制的字符串,比如'#eeeff'

比如在这里我们可以获得口袋怪兽的配色python引用turtle画蝴蝶

比如我们在这里就可以选择皮卡丘的配色

538b5e776405

皮卡丘

把鼠标挪上去以后对应的html16位进制的颜色代码就会出现,直接用就可以了

还有很多其他宝可梦的配色可以选择,只要输入对应的宝可梦的英文名就可以找到对应的宝可梦

538b5e776405

喷火龙

538b5e776405

水箭龟

538b5e776405

你认得这些颜色分别是哪几只宝可梦的吗?

data.sum().plot.bar(color=['#f6bd20','#9c5200','#de9400'])

plt.title('Activity Vs Number',color='white')

plt.xlabel('Activity',color='white')

plt.ylabel('Number',color='white')

plt.xticks(rotation=0,color='white',backgroundcolor='b')#设置xticks的方向

plt.yticks(color='white')

plt.grid(alpha=0.5)

538b5e776405

绘图结果

传入一个合法的html name

data.sum().plot.bar(color=['red','burlywood'\

,'chartreuse'])

plt.title('Activity Vs Number',color='white')

plt.xlabel('Activity',color='white')

plt.ylabel('Number',color='white')

plt.xticks(rotation=0,color='white',backgroundcolor='b')#设置xticks的方向

plt.yticks(color='white')

(array([ 0., 10., 20., 30., 40., 50., 60., 70.]),

)

538b5e776405

绘图结果

关于颜色的命名可以参考这个链接

data.sum().plot.bar(color=['tab:blue','blue'\

,'chartreuse'])

plt.title('Activity Vs Number',color='white')

plt.xlabel('Activity',color='white')

plt.ylabel('Number',color='white')

plt.xticks(rotation=0,color='white',backgroundcolor='b')#设置xticks的方向

plt.yticks(color='white')

(array([ 0., 10., 20., 30., 40., 50., 60., 70.]),

)

538b5e776405

绘图结果

设置一个浮点数,代表一个连续的灰度变化

data.sum().plot.bar(color=['0','0.5'\

,'0.7'])

plt.title('Activity Vs Number',color='white')

plt.xlabel('Activity',color='white')

plt.ylabel('Number',color='white')

plt.xticks(rotation=0,color='white',backgroundcolor='b')#设置xticks的方向

plt.yticks(color='white')

(array([ 0., 10., 20., 30., 40., 50., 60., 70.]),

)

538b5e776405

绘图结果

设置连续变化颜色的代码

T=np.linspace(0,0.6,3)**2

colors=[(0,0.5,i) for i in T]

data.sum().plot.bar(color=colors)

plt.title('Activity Vs Number',color='white')

plt.xlabel('Activity',color='white')

plt.ylabel('Number',color='white')

plt.xticks(rotation=0,color='white',backgroundcolor='b')#设置xticks的方向

plt.yticks(color='white')

(array([ 0., 10., 20., 30., 40., 50., 60., 70.]),

)

538b5e776405

绘图结果

我们在这里用的是三原色的方式来设置颜色,保证两个通道的值不变,用numpy的linspace方法来递增一系列值来得到递增变化颜色的效果,传入到三原色的最后一个通道值当中

import matplotlib.cm

print(matplotlib.cm.cmap_d.keys())

dict_keys(['Blues', 'BrBG', 'BuGn', 'BuPu', 'CMRmap', 'GnBu', 'Greens', 'Greys', 'OrRd', 'Oranges', 'PRGn', 'PiYG', 'PuBu', 'PuBuGn', 'PuOr', 'PuRd', 'Purples', 'RdBu', 'RdGy', 'RdPu', 'RdYlBu', 'RdYlGn', 'Reds', 'Spectral', 'Wistia', 'YlGn', 'YlGnBu', 'YlOrBr', 'YlOrRd', 'afmhot', 'autumn', 'binary', 'bone', 'brg', 'bwr', 'cool', 'coolwarm', 'copper', 'cubehelix', 'flag', 'gist_earth', 'gist_gray', 'gist_heat', 'gist_ncar', 'gist_rainbow', 'gist_stern', 'gist_yarg', 'gnuplot', 'gnuplot2', 'gray', 'hot', 'hsv', 'jet', 'nipy_spectral', 'ocean', 'pink', 'prism', 'rainbow', 'seismic', 'spring', 'summer', 'terrain', 'winter', 'Accent', 'Dark2', 'Paired', 'Pastel1', 'Pastel2', 'Set1', 'Set2', 'Set3', 'tab10', 'tab20', 'tab20b', 'tab20c', 'Blues_r', 'BrBG_r', 'BuGn_r', 'BuPu_r', 'CMRmap_r', 'GnBu_r', 'Greens_r', 'Greys_r', 'OrRd_r', 'Oranges_r', 'PRGn_r', 'PiYG_r', 'PuBu_r', 'PuBuGn_r', 'PuOr_r', 'PuRd_r', 'Purples_r', 'RdBu_r', 'RdGy_r', 'RdPu_r', 'RdYlBu_r', 'RdYlGn_r', 'Reds_r', 'Spectral_r', 'Wistia_r', 'YlGn_r', 'YlGnBu_r', 'YlOrBr_r', 'YlOrRd_r', 'afmhot_r', 'autumn_r', 'binary_r', 'bone_r', 'brg_r', 'bwr_r', 'cool_r', 'coolwarm_r', 'copper_r', 'cubehelix_r', 'flag_r', 'gist_earth_r', 'gist_gray_r', 'gist_heat_r', 'gist_ncar_r', 'gist_rainbow_r', 'gist_stern_r', 'gist_yarg_r', 'gnuplot_r', 'gnuplot2_r', 'gray_r', 'hot_r', 'hsv_r', 'jet_r', 'nipy_spectral_r', 'ocean_r', 'pink_r', 'prism_r', 'rainbow_r', 'seismic_r', 'spring_r', 'summer_r', 'terrain_r', 'winter_r', 'Accent_r', 'Dark2_r', 'Paired_r', 'Pastel1_r', 'Pastel2_r', 'Set1_r', 'Set2_r', 'Set3_r', 'tab10_r', 'tab20_r', 'tab20b_r', 'tab20c_r', 'magma', 'magma_r', 'inferno', 'inferno_r', 'plasma', 'plasma_r', 'viridis', 'viridis_r', 'cividis', 'cividis_r'])

np.linspace(0,1,20)

array([0. , 0.05263158, 0.10526316, 0.15789474, 0.21052632,

0.26315789, 0.31578947, 0.36842105, 0.42105263, 0.47368421,

0.52631579, 0.57894737, 0.63157895, 0.68421053, 0.73684211,

0.78947368, 0.84210526, 0.89473684, 0.94736842, 1. ])

color_map=matplotlib.cm.BuGn(np.linspace(0.4,0.5,3))

color_map

array([[0.56 , 0.82980392, 0.75921569, 1. ],

[0.47843137, 0.79461745, 0.70003845, 1. ],

[0.39772395, 0.75955402, 0.64030757, 1. ]])

T=np.linspace(0,0.6,3)**2

colors=[(0,0.5,i) for i in T]

data.sum().plot.bar(color=color_map)

plt.title('Activity Vs Number',color='white')

plt.xlabel('Activity',color='white')

plt.ylabel('Number',color='white')

plt.xticks(rotation=0,color='white',backgroundcolor='b')#设置xticks的方向

plt.yticks(color='white')

(array([ 0., 10., 20., 30., 40., 50., 60., 70.]),

)

538b5e776405

绘图结果

设置连续变化颜色的第二种方法是按照colormap的方法来设置

matplotlib的colormap的直观图

Image('/Users/chenlinlin/Downloads/matplotlib.pyplot常用总结/colormap.png',width=600)

538b5e776405

颜色条

在这里,colormap是一些连续变化的条,我们通过np.linspace可以获得一些间断的值,这些间断的值对应去去这个colormap上面的颜色rgb值,然后这些rgb值可以被我们所用

获取colormap有两种方法:

用maplotlib.cm.cmap_d.keys()方法

除了以上的自己设置颜色的方法,也可以用一些现有的解决方案快速解决问题。

比如我们可以直接套用style

plt.style.use('ggplot')#用ggplot的主题

也可以导入seaborn的包,其颜色主题会随之修改,好看很多

import seaborn as sns

data.columns=['first class', 'Public class', 'Graduation']

data.sum().plot.bar()

plt.title('Activity Vs Number',color='black')

plt.xlabel('Activity',color='black')

plt.ylabel('Number',color='black')

plt.xticks(rotation=0,color='black')#设置xticks的方向

plt.yticks(color='black')

538b5e776405

绘图结果

以上两种方法效果是等效的,用哪种都可以。

关于matplotlib的设置--通过修改matplotlib.rcParams实现

538b5e776405

暂时修改

matplotlib有许多现成的样式在plt.style中,可以通过plt.style.avaliable来看到

['seaborn-ticks', 'ggplot', 'dark_background', 'bmh', 'seaborn-poster', 'seaborn-notebook', 'fast', 'seaborn', 'classic', 'Solarize_Light2', 'seaborn-dark', 'seaborn-pastel', 'seaborn-muted', '_classic_test', 'seaborn-paper', 'seaborn-colorblind', 'seaborn-bright', 'seaborn-talk', 'seaborn-dark-palette', 'tableau-colorblind10', 'seaborn-darkgrid', 'seaborn-whitegrid', 'fivethirtyeight', 'grayscale', 'seaborn-white', 'seaborn-deep']

这些样式都放在了mpl_configdir/stylelib/目录下,你甚至可以自己设置.mplstyle后缀名的文件,放到该目录下。

比如设置名为presentation.mplstyle的文件,放到该目录下

axes.titlesize : 24

axes.labelsize : 20

lines.linewidth : 3

lines.markersize : 10

xtick.labelsize : 16

ytick.labelsize : 16

要用的时候就直接用

plt.style.use('presentation')

避免全局影响

如果你只是想这个地方用一用,而不是应用到全局。可以考虑用plt.style.context这个管理器。

with plt.style.context(('dark_background')):

plt.plot(np.sin(np.linspace(0, 2*np.pi)), '-o')

plt.show()

538b5e776405

修改设置表

你还可以通过修改plt.rcParams的方式来实现样式的修改,这个修改会直接反映到packages上面。

修改的语句有两种:

第一种

matplotlib.rcParams['lines.linewidth']=2

plt.plot(data)

538b5e776405

第一种方法

语法是mpl.rcParams['部件.部件参数']=你想设置的值

第二种

mpl.rc('line', lindwidth=4,color='r')

plt.plot(data)

语法是mpl.rc(部件, 部件所具有的参数*)

538b5e776405

第二种方法

关于里面传的具体参数的名字,参考官方文档。

538b5e776405

关于修改部件的说明

也可以根据python的kwargs的语法传入一个字典。

比如

lines={'linewidth':1.5, 'linestyle':'--','color':'g'}#这是我要赋值的参数名字和参数

mpl.rc('lines', **lines)

然后绘制正弦曲线

plt.plot(np.sin(np.linspace(0, 2 * np.pi)))

538b5e776405

修改样式后的正弦曲线

一般来说,如果分析工作用的样式是统一的,最好是修改style文件,或者是在前面用rcParams的方法去统一接下来绘制的图的相同样式。

关于maplotlib的其他用法

我之后还会一直更新,目前提供一张小抄供有需要的人去对照着看一下

Image('/Users/chenlinlin/Downloads/matplotlib.pyplot常用总结/cheatsheet.png',width=600)

538b5e776405

matplotlib小抄

参考链接

  • 19
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值