- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 matplotlib 的新手,我遇到了一个小问题。我正在尝试制作 3 个相互堆叠的图,共享 x 轴和 2 个不同的 y 轴。
这是我当前的代码
import numpy as np
import matplotlib.pyplot as plt
periods = range(1,13)
n0 = [4.2, 6.7, 10.6, 51.3, 339, 45.6, 56.3, 112.9, 182.7, 185.7, 126.2, 25.39]
alp = [2.12, 2.14, 2.19, 2.35, 2.54, 2.33, 2.34, 2.43, 2.45, 2.46, 2.466, 2.249]
B = [0.045, 0.041, 0.04, 0.04, 0.057, 0.048, 0.044, 0.057, 0.054, 0.065, 0.06, 0.045]
emin = [166, 201.9, 215, 270.7, 351.8, 263.7, 302.2, 323.6, 328.7, 346.1, 279.5, 259.8]
emax = [21806, 28407, 5706, 22087, 17978, 11699, 19440, 17988, 26938, 14812, 14195, 26121]
eq = [7.8, 11.8, 13.3, 15.2, 8.87, 10.5, 13.8, 7.6, 11.5, 7.4, 6.4, 13.5]
f, (ax1, ax2, ax3) = plt.subplots(3, sharex = True)
ax1.scatter(periods, emin, c="k")
ax1.set_ylabel(r"$E_{min}")
ax1.yaxis.set_ticks(range(160, 380, 40))
ax4 = ax1.twinx()
ax4.scatter(periods, n0, c="r")
ax4.set_ylabel(r"$N_0$", color = 'r')
ax4.tick_params(colors = 'r')
ax4.yaxis.set_ticks(np.arange(20, 340, 50))
ax2.scatter(periods, emax, c="k")
ax2.set_ylabel(r"$E_{max}$")
ax2.yaxis.set_ticks(np.arange(5000, 30000, 5000))
ax5 = ax2.twinx()
ax5.scatter(periods, alpha, c="r")
ax5.set_ylabel("alp", color = 'r')
ax5.tick_params(colors = 'r')
ax5.yaxis.set_ticks(np.arange(2.1, 2.6, 0.1))
ax3.scatter(periods, eq, c="k")
ax3.set_ylabel("Eq")
ax3.yaxis.set_ticks(np.arange(6, 15, 2))
ax3.set_xlabel("Periods")
ax6 = ax3.twinx()
ax6.scatter(periods, B, c="r")
ax6.set_ylabel("B", color = 'r')
ax6.tick_params(colors = 'r')
ax6.yaxis.set_ticks(np.arange(0.02, 0.09, 0.02))
ax6.xaxis.set_ticks(range(1,13))
f.subplots_adjust(hspace = 0)
plt.setp([a.get_xticklabels() for a in f.axes[:-1]], visible=False)
plt.show()
ax6.xaxis.set_ticks(range(1,13))
rotation = 90
在 ylabel 中,但它不会改变(尽管其他值有效)。
最佳答案
为了让您的 x 刻度出现,您需要更改倒数第二行并设置 visible = True
.要将 y 标签旋转 90 度,请使用 rotation =
正如您所做的那样,但将旋转设置为 0
.这样做可能会使您的标签和刻度重叠。您可以使用 labelpad =
删除它。在您的 ax.set_ylabel()
.这是轴和标签之间的间距。
f, (ax1, ax2, ax3) = plt.subplots(3, sharex = True)
ax1.scatter(periods, emin, c="k")
ax1.set_ylabel(r"$E_{min}$",rotation=0,labelpad=20)
ax1.yaxis.set_ticks(range(160, 380, 40))
ax4 = ax1.twinx()
ax4.scatter(periods, n0, c="r")
ax4.set_ylabel(r"$N_0$", color = 'r',rotation=0,labelpad=10)
ax4.tick_params(colors = 'r')
ax4.yaxis.set_ticks(np.arange(20, 340, 50))
ax2.scatter(periods, emax, c="k")
ax2.set_ylabel(r"$E_{max}$",rotation=0,labelpad=20)
ax2.yaxis.set_ticks(np.arange(5000, 30000, 5000))
ax5 = ax2.twinx()
ax5.scatter(periods, alp, c="r")
ax5.set_ylabel("alp", color = 'r',rotation=0,labelpad=15)
ax5.tick_params(colors = 'r')
ax5.yaxis.set_ticks(np.arange(2.1, 2.6, 0.1))
ax3.scatter(periods, eq, c="k")
ax3.set_ylabel("Eq",rotation=0,labelpad=20)
ax3.yaxis.set_ticks(np.arange(6, 15, 2))
ax3.set_xlabel("Periods")
ax6 = ax3.twinx()
ax6.scatter(periods, B, c="r")
ax6.set_ylabel("B", color = 'r',rotation=0,labelpad=10)
ax6.tick_params(colors = 'r')
ax6.yaxis.set_ticks(np.arange(0.02, 0.09, 0.02))
ax1.xaxis.set_ticks(np.arange(1, 13, 1))
f.subplots_adjust(hspace = 0,left=0.14,right=0.90)
plt.setp([a.get_xticklabels() for a in f.axes[:-1]], visible=True)
plt.show()
labelpad
由于每个轴的刻度标签长度不同,因此可以将标签准确放置在您想要的位置。
关于python-2.7 - Matplotlib:xticks 标签未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43038107/
环境:Windows 7 64 位,Matlab 2014a 目标: 绘制两个待优化参数的误差热图。 放置适当的刻度线和刻度值 在正确的地方画出网格线 问题:排列 X 和 Y 刻度位置和值。当 x 轴
我用 Excel 文件中的数据创建了一个图表。我需要保留所有 xticks 但 xticklabels 只出现在每 6 个刻度上。我试过这样做: tickStep=6; Sheet=2; filena
我正在使用 Matlab 绘制数据并尝试处理刻度/刻度标签。 我打算做什么 绘制带有动态刻度标签的图表,这样我就可以找出图表上特定点的时间戳。因此时间戳 (xTickLabel) 应该只来自数据源。
我无法使用以下代码在 xticks 之间获得更好的空间: import random import matplotlib.pyplot as plt coverages = [random.randi
在 x 轴上,我想显示数字(不旋转),并在每个数字下方显示旋转名称。我有以下内容,但想分别轮换名称“一”、“二”和“三”。 plt.xticks([1,2,3], ['1\n one', '2\n t
如何从字典中的键设置 xticks?在我的原始代码中,字典是空的,并根据数据文件进行填充,因此我不能为 xticks 设置任何静态内容。根据用户输入的内容(1-10 之间的数字),该图从该数量的最高值
我试图在对数刻度之间绘图,但存在问题; from pylab import * import matplotlib.pyplot as pyplot Ds = pow(10,5) D = np.li
我无法让我的 x 刻度标签旋转,目前它们总体 我已经尝试过(如代码所示,为了使用旋转参数,我尝试使用 plt.setp 并尝试在第一个绘图参数内旋转。如果我只有一个轴,那么它会完美绘制,它是辅助轴由于
我正在绘制两个 pandas 系列。索引是一个日期(1-1到12-31) s1.plot() s2.plot() pd.plot() 解释日期并将它们分配给轴值,如下所示: 我想将主要刻度修改为每个月
使用 Matplotlib,我有两个子图,我希望它们具有相同的自定义字符串 xticks。 这是我到目前为止尝试过的一个最小示例: import matplotlib.pyplot as plt f,
如果我绘制单个 imshow 图我可以使用 fig, ax = plt.subplots() ax.imshow(data) plt.xticks( [4, 14, 24], [5, 15, 25]
class parser(object): """docstring for parser""" def __init__(self, path): self.enco
我无法操纵所有子图上的 xticks。我正在使用的 xticks 方法(根据文档)仅更改最顶层子图的 xticks。 如何更改下部子图的 xticks? 下面是我的代码: fig = make_sub
来自 plotly doc : layout > xaxis > tickvals: Sets the values at which ticks on this axis appear. Only
我有下一个DF: A B C 1 2 'name 1' 2 3 'name 2' 3 5 'name 3' 绘制A列并将C列用作xticks的正确顺序是什么? df['A'].plot(xticks
在下图中,如何使 xTicks 适合所有 x 轴?我不明白问题出在哪里,作为新的 MATLAB 用户,我将不胜感激任何建议。 这是我绘制此图的代码部分: f=figure(); plo
我想在刻度之间放置标签,否则某些标签会相互重叠。 set(gca,'XTick',[66 98 134 215 266 330 334 388 414 443 ]); set(gca,'XTickLa
我正在尝试按对象绘制组,但 x 轴标签未对齐。有什么帮助吗?谢谢。 我的代码: gdp_by_region.plot(kind='bar', align= 'center') plt.xticks(f
这个问题已经有答案了: Changing the tick frequency on the x or y axis (14 个回答) 已关闭 4 年前。 我画了一个计数图,如下: ax, fig =
这个问题已经有答案了: matplotlib strings as labels on x axis (4 个回答) 已关闭 5 年前。 def plot_freq_error(diff,file,p
我是一名优秀的程序员,十分优秀!