Python学习笔记(三)——数据可视化(2)

需要在同一张图绘制两条曲线时,调用两次plot方法即可,参数c、label可以分别指定颜色和标签,legend方法可以绘制图例

plt.plot(x_values, y_values1, c=’blue’, label=’Women’)
plt.plot(x_values, y_values2, c=’green’, label=’Men’)
plt.legend(loc=’upper right’)
plt.title(‘Percentage of Biology Degrees Awarded By Gender’)
plt.show()

效果如图:
Python学习笔记(三)——数据可视化(2)_第1张图片

图片来自:https://www.dataquest.io/m/147/improving-plot-aesthetics/4/visualizing-the-gender-gap


最大化data-ink比

data-ink比即数据量和图标构成的比例,比例越大,获取信息就越直观,如图所示:

Axes.tick_params方法可以去除轴上的标记

plt.tick_params(bottom=”off”, top=”off”, left=”off”, right=”off”)

Spine.set_visible()方法可以去除图表的边框

fig, ax = plt.subplots()
ax.spines[“right”].set_visible(False)
ax.spines[“left”].set_visible(False)
ax.spines[“top”].set_visible(False)
ax.spines[“bottom”].set_visible(False)

当然,这样写未免太过麻烦。shines是一个dict。print(ax.spines)结果如下:

{‘right’: , ‘bottom’: , ‘top’: , ‘left’: }

因此,可以用一个for循环来去除图表的四边

for key,spine in ax.spines.items():
    spine.set_visible(False)

subplot方法:绘制子图

subplot将整个绘图区域等分为numRows行* numCols列个子区域,然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1。如果numRows,numCols和plotNum这三个数都小于10的话,可以把它们缩写为一个整数,例如subplot(323)和subplot(3,2,3)是相同的。subplot在plotNum指定的区域中创建一个轴对象。如果新创建的轴和之前创建的轴重叠的话,之前的轴将被删除。

plt.subplot(numRows, numCols, plotNum) 

如果要绘制一个第一行两张图,第二行一张图的图表呢?

plt.subplot(2, 2, 1)
plt.subplot(2, 2, 2)
plt.subplot(2, 1, 2)

也因为subplot方法本身的特性,可以方便的用循环来绘制连续的图表

for i in range(0, 4):
    plt.subplot(2, 2, 1 + i)

subplot方法返回两个值,第一个是图像对象,第二个则是包含各个子表的元组(tuple),所以我们经常看到这样的代码:

fig, ax = plt.subplots()

此外,注意设置子表的标题使用的不是title方法而是set_title方法

ax.set_title(‘a string’)

类似的,设置坐标轴范围应使用set_x(y)lim方法

ax.set_xlim(1, 2)
ax.set_ylim([‘a’, ‘b’, ‘c’])

你可能感兴趣的:(Python学习笔记(三)——数据可视化(2))