【MAC os】python matplotlib 柱形图 画图刻度、图例等字体、字体大小以及matplotlib中文显示乱码问题

系统:MAC os系统

目标:使用python的matplotlib画柱状图,以及matplotlib中文显示乱码问题。

  • 画柱状c

 

#导入所需要的库
import matplotlib.pyplot as plt

#要设置下面两行才能显示中文 Arial Unicode MS 为字体
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
#设置图片大小
plt.figure(figsize=(20, 11), dpi=200)


movie_name = ['aaa','bbb','ccc']
test1 = [29, 17, 27]
test2 = [35, 22, 30]
test3 = [37, 23, 31]


# 先得到movie_name长度, 再得到下标组成列表
x = range(len(movie_name))

plt.bar(x, test1,label="test1", width=0.2)
# 向右移动0.2, 柱状条宽度为0.2
plt.bar([i + 0.225 for i in x], test2,label="test2", width=0.2)
plt.bar([i + 0.45 for i in x], test3,label="test3", width=0.2)



#设置图例并且设置图例的字体及大小
font1 = {'family' : 'Times New Roman',
'weight' : 'normal',
'size'   : 21,
}
plt.legend(prop=font1)
# 底部汉字移动到两个柱状条中间(本来汉字是在左边蓝色柱状条下面, 向右移动0.1)
plt.xticks([i + 0.35 for i in x], movie_name)


#设置坐标刻度值的大小以及刻度值的字体
plt.yticks(fontproperties = 'Times New Roman', size = 40)
plt.xticks(fontproperties = 'Times New Roman', size = 40)

#设置横纵坐标的名称以及对应字体格式
font2 = {'family' : 'Arial Unicode MS',
'weight' : 'normal',
'size'   : 35,
}
plt.xlabel('电影名字',font2)
plt.ylabel('分值',font2)
plt.show()

  • matplotlib中文显示乱码问题。

 

Macos系统的matplotlib中文显示的快捷方法,不用下载字体,只需要修改一下matplotlib的配置文件即可,方便快捷,不过这种方法只能使用特定的字体,如果不接受这种字体的,可以搜搜下载字体法,这里就不在赘述。

 

1.首先找到matplotlibrc 文件

 

首先,找到matplotlib所在路径

 

>>> import matplotlib
>>> matplotlib.matplotlib_fname()

 

然后,这里有两种修改matplotlibrc 文件方法。

 

第一种,

 

(1)找到  #font.family:sans-serif  ,将前面的“#”删除

(2)找到 #font.sana-serif: DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva,   Lucid, Arial, Helvetica, Avant Garde, sans-serif       

  在  “DejaVu Sans” 前面添加 “Arial Unicode MS, ”

(3)找到axes.unicode_minus  将其后面的“True” 改为“False”

第二种,比较方便快捷,直接在文件末尾加上这三行。

font.family: sans-serif
font.sans-serif: Arial Unicode MS, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
axes.unicode_minus: False

两种方法效果一致。

 

2.删除~/.matplotlib目录下的两个文件

rm -rf ~/.matplotlib/* 

3.最后一步,重启python,即可解决中文及“-”无法正常显示的问题。

 

测试程序:

x = ['王俊凯', '金厉旭', '-1']
y = [1, 2, 3]
plt.plot(x, y)
plt.show()

 

参考链接:

https://blog.csdn.net/love__live1/article/details/83143195

https://blog.csdn.net/u010358304/article/details/78906768

https://my.oschina.net/u/1180306/blog/279818

https://blog.csdn.net/qq_34554039/article/details/91356634

https://www.cnblogs.com/cymwill/p/10554916.htmlhttps://www.cnblogs.com/hum0ro/p/9781390.html

 

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对您的问题,我可以给您提供一些Python Matplotlib画图中设置字体字体大小刻度密度、线条样式等的方法。 1. 设置字体字体大小: 可以使用`rcParams`来设置全局字体字体大小,也可以在特定的对象上进行设置。例如: ```python import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'Times New Roman' plt.rcParams['font.size'] = 16 # 或者使用下面的方式进行设置: fig, ax = plt.subplots() ax.set_xlabel('X Label', fontsize=16, fontfamily='Times New Roman') ax.set_ylabel('Y Label', fontsize=16, fontfamily='Times New Roman') ``` 2. 设置刻度密度: `xticks`和`yticks`可以设置刻度的位置,`xticklabels`和`yticklabels`可以设置刻度标签的内容,`tick_params`可以设置刻度的样式,例如: ```python import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 10, 100) y = np.sin(x) fig, ax = plt.subplots() ax.plot(x, y) ax.set_xticks([0, 2, 4, 6, 8, 10]) ax.set_xticklabels(['0', '2', '4', '6', '8', '10'], fontsize=12) ax.set_yticks([-1, 0, 1]) ax.set_yticklabels(['-1', '0', '1'], fontsize=12) ax.tick_params(axis='both', which='major', length=10, width=2, labelsize=12) ax.tick_params(axis='both', which='minor', length=5, width=1, labelsize=10) ``` 3. 设置线条样式: 可以使用`plot`函数中的`linestyle`参数来设置线条样式,例如: ```python import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) fig, ax = plt.subplots() ax.plot(x, y1, linestyle='-', linewidth=2, label='sin(x)') ax.plot(x, y2, linestyle='--', linewidth=2, label='cos(x)') ax.legend(loc='upper right', fontsize=12) ``` 以上是一些基本的设置方法,您可以根据具体需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值