这实际上是个品味问题,也是针对受众的问题。 matplotlib
试图为科学目的制作清晰的插图。这是必然的妥协,这些插图不适合在杂志上打印或在广告中展示。
关于这一点,matplotlib
有好消息和坏消息。
坏消息:
- 没有单一神奇的命令或软件包可以使用
matplotlib
创建美丽的图形。
好消息:
在我看来,最困难的事情是决定你想要什么。然后做你想做的事情会更容易,尽管一开始可能需要花费一些时间学习。
只是一个例子:
import numpy as np
import matplotlib.pyplot as plt
xdata = np.arange(25)
ydata = np.random.randint(10, 20, 25)
ydata[24] = ydata[0]
fig = plt.figure(figsize=[7,5])
ax = plt.subplot(111)
l = ax.fill_between(xdata, ydata)
ax.set_xlabel('Time of posting (US EST)')
ax.set_ylabel('Percentage of Frontpaged Submissions')
ax.set_title('Likelihood of Reaching the Frontpage')
ax.set_xlim(0, 24)
ax.set_ylim(6, 24)
ax.grid('on')
(仅供参考:原始图像中的X轴限制没有考虑数据的周期性。)
这将给我们带来类似于这样的东西:
![enter image description here](https://istack.dev59.com/B32Gy.webp)
很容易理解,为了向非工程背景的观众展示这个图表,我们需要做很多改变,至少包括:
- 使填充透明并且颜色不那么刺眼
- 增加线条粗度
- 更改线条颜色
- 在X轴上添加更多刻度
- 更改标题的字体
l.set_facecolors([[.5,.5,.8,.3]])
l.set_edgecolors([[0, 0, .5, .3]])
l.set_linewidths([3])
ax.set_xticks(np.arange(25))
ax.xaxis.set_tick_params(size=0)
ax.yaxis.set_tick_params(size=0)
ax.spines['right'].set_color((.8,.8,.8))
ax.spines['top'].set_color((.8,.8,.8))
xlab = ax.xaxis.get_label()
ylab = ax.yaxis.get_label()
xlab.set_style('italic')
xlab.set_size(10)
ylab.set_style('italic')
ylab.set_size(10)
ttl = ax.title
ttl.set_weight('bold')
现在我们有:
![enter image description here](https://istack.dev59.com/9jUee.webp)
这与问题中的情况不完全一样,但是可以将所有内容调整到该方向。这里设置的许多内容都可以设置为matplotlib
的默认值。也许这可以给出如何在图表中更改内容的想法。