0%

当标签文本很长时,或者是某维度的数据列表长度很长时,都会造成标签的重叠覆盖。

解决方法有以下几种。我们使用的数据如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import pandas as pd
import matplotlib.pyplot as plt

industry = ['交通运输', '休闲服务', '传媒', '公用事业', '农林牧渔', '化工',
'医药生物', '商业贸易', '国防军工', '家用电器', '建筑材料', '建筑装饰',
'房地产', '有色金属', '机械设备', '汽车', '电子', '电气设备', '纺织服装',
'综合', '计算机', '轻工制造', '采掘', '银行', '非银金融', '食品饮料']
cap = [4572, 253, 84, 119, 23, 352, 1059, 631, 900, 95, 43, 430, 1524, 52, 1254,
2581, 3012, 195, 70, 31, 1338, 61, 111, 4964, 2782, 291]

# 生成Series
s = pd.Series(cap, industry)
# 排序
sort_s = series.sort_values(ascending=False)

# 生成x轴 y轴序列
x = sort_s.index
y = sort_s.values

fig, axs = plt.subplots()
axs.bar(x, y)

拉长画布

查看画布默认大小

1
2
plt.rcParams['figure.figsize']
[6.0, 4.0]

我们把画布拉长一倍,设置 figsize 参数。

1
2
fig, axs = plt.subplots(figsize=(12, 4))
axs.bar(x, y)

拉长以后,bar 的宽度也变大了。

由于 x 轴的数据太多了,还是有覆盖现象。

调整标签字体字号

1
2
3
4
fig, axs = plt.subplots()
# 调整x轴标签的大小
axs.tick_params(axis='x', labelsize=6)
axs.bar(x, y)

x轴和y轴互换

1
2
fig, axs = plt.subplots()
axs.barh(x, y)

标签旋转

目前比较好的解决方案可能是标签旋转,再适当的放大x轴。

1
2
3
4
fig, axs = plt.subplots(figsize=(12, 4))
# x轴标签旋转
axs.tick_params(axis='x', labelrotation=-60)
axs.bar(x, y)

创建 DataFrame 的几种方法。

1
2
class pandas.DataFrame(data=None, index: Optional[Collection] = None, columns: Optional[Collection] = None,
dtype: Union[str, numpy.dtype, ExtensionDtype, None] = None, copy: bool = False)

data 参数可以是:ndarray (structured or homogeneous), Iterable, dict, or DataFrame.
Dict can contain Series, arrays, constants, or list-like objects.

由数组/list组成的字典创建 DataFrame

1
2
3
4
5
6
7
8
9
import pandas as pd

d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(d)
df

col1 col2
0 1 3
1 2 4

看看创建的 DataFrame 元素的类型。

1
2
3
4
5
df.dtypes

col1 int64
col2 int64
dtype: object

如果要修改类型

1
2
3
4
5
6
7
import numpy as np
df2 = pd.DataFrame(d, dtype=np.int8)
df2.dtypes

col1 int8
col2 int8
dtype: object

由 Series 组成的字典创建 DataFrame

1
2
3
4
5
6
7
df3 = pd.DataFrame({'col1': pd.Series([1, 2]), 'col2': pd.Series([3, 4])})
df3


col1 col2
0 1 3
1 2 4

由字典组成的列表创建 DataFrame

1
2
3
4
5
6
7
df4 = pd.DataFrame([{'col1': 1, 'col2': 3}, {'col1': 2, 'col2': 4}])
df4


col1 col2
0 1 3
1 2 4

由字典组成的字典创建 DataFrame

column 为父字典的 key,index 为子字典的 key。

1
2
3
4
5
6
7
df4 = pd.DataFrame({'col1': {'idx1': 1, 'idx2': 2}, 'col2': {'idx1': 3, 'idx2': 4}})
df4


col1 col2
idx1 1 3
idx2 2 4

由二维数组创建 DataFrame

1
2
3
4
5
6
7
df5 = pd.DataFrame([[1, 3], [2, 4]])
df5


0 1
0 1 3
1 2 4

当然,也可以自定义 index 和 column

1
2
3
4
5
6
df6 = pd.DataFrame([[1, 3], [2, 4]], index=['a', 'b'], columns=['c1', 'c2'])
df6

c1 c2
a 1 3
b 2 4

不管是 Windows 还是 Linux,想要不输入用户名和密码操作 Git,只需要把 id_rsa.pub 公钥复制粘贴到 Github 里面就行了。

安装git

打开 Git Bash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ ssh-keygen -t rsa -C "simon@finolo.gy"

Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/simon/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/simon/.ssh/id_rsa.
Your public key has been saved in /c/Users/simon/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:epRQbzd91E6aLp3aM+ym2FEZMgLNCkA108nb5lsk7CM simon@finolo.gy
The key's randomart image is:
+---[RSA 3072]----+
| .oo+oo+ o|
| .++oo . .o|
| .. =+ = o=.|
| .oo=o.+o+.|
| S+ o oo. |
| oE + o.+ |
| . .. +.= |
| . .o..* |
| . o+.o |
+----[SHA256]-----+

这个邮箱可以随便输入的,并不需要是 Github.com 的登录帐户。

拷贝 id_rsa.pub 内容到 Github

Settings -> SSH and GPG keys -> New SSH key

把前面生成的 /c/Users/simon/.ssh/id_rsa.pub 文件内容粘贴上去就可以了。