import matplotlib as mpl import matplotlib.pyplot as plt #设定中文字体 plt.rcParams['font.sans-serif'] = ['STCAIYUN'] fig,ax1=plt.subplots() ax1.bar(["a","b","c"],[1,2,3],color='r') #画柱形图的时候可以通过color参数设定颜色,"r"是红色的简称 ax1.bar(["a","b","c"],[0.5,1,1.5],color='b') #"b"是蓝色的简称 #还可以这样设定,用四个数字指定,四个数字分别是,r饱和度,g饱和度,b饱和度,透明度 ax1.bar(["a","b","c"],[0.4,0.8,1],color=(1,0.5,0.5,0.8)) #如何想要配色好看,则需要一些美学知识。 #折线图颜色设定是一样的 ax1.plot(["a","b","c"],[1,2,3],color=(0,0,0,1),linewidth=10) ax1.set_title("测试标题",fontsize=80)
你通过rcParams修改了默认字体后,如果改的字体比较奇怪画出来的图形就会很奇怪,所有的文字和数字都会变成这个字体。
ermutuxia
2020-08-18
## font props 'font.family': [['sans-serif'], validate_stringlist], # used by text object 'font.style': ['normal', validate_string], 'font.variant': ['normal', validate_string], 'font.stretch': ['normal', validate_string], 'font.weight': ['normal', validate_fontweight], 'font.size': [10, validate_float], # Base font size in points 'font.serif': [['DejaVu Serif', 'Bitstream Vera Serif', 'Computer Modern Roman', 'New Century Schoolbook', 'Century Schoolbook L', 'Utopia', 'ITC Bookman', 'Bookman', 'Nimbus Roman No9 L', 'Times New Roman', 'Times', 'Palatino', 'Charter', 'serif'], validate_stringlist], 'font.sans-serif': [['DejaVu Sans', 'Bitstream Vera Sans', 'Computer Modern Sans Serif', 'Lucida Grande', 'Verdana', 'Geneva', 'Lucid', 'Arial', 'Helvetica', 'Avant Garde', 'sans-serif'], validate_stringlist], 'font.cursive': [['Apple Chancery', 'Textile', 'Zapf Chancery', 'Sand', 'Script MT', 'Felipa', 'cursive'], validate_stringlist], 'font.fantasy': [['Comic Neue', 'Comic Sans MS', 'Chicago', 'Charcoal', 'Impact', 'Western', 'Humor Sans', 'xkcd', 'fantasy'], validate_stringlist], 'font.monospace': [['DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Computer Modern Typewriter', 'Andale Mono', 'Nimbus Mono L', 'Courier New', 'Courier', 'Fixed', 'Terminal', 'monospace'], validate_stringlist],
ermutuxia
2020-08-18
## font props
'font.family': [['sans-serif'], validate_stringlist], # used by text object
'font.style': ['normal', validate_string],
'font.variant': ['normal', validate_string],
'font.stretch': ['normal', validate_string],
'font.weight': ['normal', validate_fontweight],
'font.size': [10, validate_float], # Base font size in points
'font.serif': [['DejaVu Serif', 'Bitstream Vera Serif',
'Computer Modern Roman',
'New Century Schoolbook', 'Century Schoolbook L',
'Utopia', 'ITC Bookman', 'Bookman',
'Nimbus Roman No9 L', 'Times New Roman',
'Times', 'Palatino', 'Charter', 'serif'],
validate_stringlist],
'font.sans-serif': [['DejaVu Sans', 'Bitstream Vera Sans',
'Computer Modern Sans Serif',
'Lucida Grande', 'Verdana', 'Geneva', 'Lucid',
'Arial', 'Helvetica', 'Avant Garde', 'sans-serif'],
validate_stringlist],
'font.cursive': [['Apple Chancery', 'Textile', 'Zapf Chancery',
'Sand', 'Script MT', 'Felipa', 'cursive'],
validate_stringlist],
'font.fantasy': [['Comic Neue', 'Comic Sans MS', 'Chicago', 'Charcoal',
'Impact', 'Western', 'Humor Sans', 'xkcd', 'fantasy'],
validate_stringlist],
'font.monospace': [['DejaVu Sans Mono', 'Bitstream Vera Sans Mono',
'Computer Modern Typewriter',
'Andale Mono', 'Nimbus Mono L', 'Courier New',
'Courier', 'Fixed', 'Terminal', 'monospace'],
validate_stringlist],
ermutuxia
2020-08-18
help(plt.rcParams)是命令其他是输出结果,这是教给你如何看帮助文件。根据帮助文件提示找到下一个帮助文件位置。
ermutuxia
2020-08-18
命令:help(plt.rcParams)
Help on RcParams in module matplotlib object:
class RcParams(collections.abc.MutableMapping, builtins.dict)
| RcParams(*args, **kwargs)
|
| A dictionary object including validation.
|
| Validating functions are defined and associated with rc parameters in
| :mod:`matplotlib.rcsetup`.
然后打开下面的文件。
"C:\ProgramData\Anaconda3\Lib\site-packages\matplotlib\rcsetup.py"
ermutuxia
2020-08-18
还有个问题,我用这个代码
plt.rcParams['font.family'] = 'YaHei Consolas Hybrid'
出现下图的问题之后
再改回原来的代码运行,plt.rcParams['font.sans-serif'] = ['Simhei']
还是这个报错图片,字体也没出来,这是什么原因呢
ermutuxia
2020-08-18
我更改字体后,总是报错并且字体出不来,报错如下:
ermutuxia
2020-08-18
plt.rcParams['font.family'] = 'YaHei Consolas Hybrid'
请问我这么写是哪里有问题吗,这么写出不来想要的字体,plt.rcParams函数应该怎么用呢
ermutuxia
2020-08-18
是不是这么理解,修改字体要先导入一种字体,然后在用
fontproperties=zhfont1
定义使用导入的字体,不能直接在plt.rcParams['font.sans-serif'] = ['Simhei'] 这个代码上直接修改字体?
ermutuxia
2020-08-18
问:柱状图及折线图的颜色可以更改吗?
答:我在下面这个帖子里回答了下
https://www.pinggu.com/post/details/5f3b5338922c1e31e64917fd
ermutuxia
2020-08-18
问:
plt.rcParams['font.sans-serif'] = ['Simhei']
请问这里面字体可以改吗?
答:
https://www.pinggu.com/post/details/5f3b4fb0922c1e31e64917f8
ermutuxia
2020-08-18
plt.rcParams['font.sans-serif'] = ['Simhei']
请问这里面字体可以改吗?柱状图及折线图的颜色可以更改吗?
ermutuxia
2020-08-18
问:
您好,可以请教下,如果0一个箱子,1一个箱子,2一个箱子,这种情况,代码怎么写呢
答: 比如你的数据中score5这一列就是你说的这种情况,这种情况不需要分箱,直接看每个值出现的频数就行。 用下面的命令。
score5各箱人数=data1["score5"].value_counts() score5各箱人数.sort_index(inplace=True)
score5badcount=data1[data1["target"]==1]["score5"].value_counts() score5goodcount=data1[data1["target"]==0]["score5"].value_counts() #将几个指标按照索引进行横向合并 picdata5=pd.concat([score5各箱人数,score5badcount,score5goodcount],axis=1) picdata5.columns=["score5各箱人数","score5badcount","score5goodcount"] #计算各箱的bad% picdata5["badper"]=picdata5["score5badcount"]/picdata5["score5各箱人数"]
import matplotlib.pyplot as plt
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Simhei']
fig,ax1=plt.subplots()
#[0,1,2]是横轴的刻度线标签
ax1.bar([0,1,2],picdata5["score5各箱人数"],label="坏人数",color='r',width=0.6)
ax1.bar([0,1,2],picdata5["score5goodcount"],label="好人数",color='b',width=0.6)
ax1.set_ylim([0,600]) # y轴边界
ax1.legend(loc=2)
ax2=ax1.twinx()
ax2.plot(picdata5["badper"],'r',label="bad百分比")
ax2.set_ylim([0,1]) # y轴边界
ax2.legend(loc=1)
fig.suptitle(u'score5的情况',fontsize=15)
ermutuxia
2020-08-18
您好,可以请教下,如果0一个箱子,1一个箱子,2一个箱子,这种情况,代码怎么写呢
ermutuxia
2020-08-18
问:
还有个关于等频分箱的问题想请教您:如果x变量里面有空值和0,0在这里面也是有意义的值,并且空值和0的比例占比较大,这种情况下还可以用等频分箱吗?如果想继续用等频分箱,要对数据如何处理呢
答:
1.如果你的数据的取值比较少的话比如0值占了50%,1占了20%,2占了30%,也就是说数据取值个数比较少,那你直接画频数图就行,不用分箱了,因为本身就算是几个箱子,0是一个箱子,1是一个箱子,2是一个箱子。
2.如果你的 数据的取值比较多的话比如0值占了50%,而其他值的取值区间为1-100,你可以将0值单独作为一类,其他值再进行分箱画图
ermutuxia
2020-08-18
还有个关于等频分箱的问题想请教您:如果x变量里面有空值和0,0在这里面也是有意义的值,并且空值和0的比例占比较大,这种情况下还可以用等频分箱吗?如果想继续用等频分箱,要对数据如何处理呢
ermutuxia
2020-08-18
因为i是从0开始循环的,在0的时候,取出的数是0-5,接下来循环到1,取出的数是5-7,大概明白了
ermutuxia
2020-08-18