我有一个简单的情节代码
plt.plot(x,y)
plt.show()
我想在x轴上添加一些额外的刻度以及当前的刻度,让我们说
extraticks=[2.1, 3, 7.6]
如你所见,我没有刻度线模式,所以我不想增加整个轴的刻度频率;只保留原始的并加上那些额外的东西......
有可能吗?
此致
答案 0 :(得分:58)
是的,您可以尝试以下方式:
plt.xticks(list(plt.xticks()[0]) + extraticks)
要使用的功能是xticks()
。当不带参数调用时,它返回当前的滴答。使用参数调用它,您可以设置刻度位置和(可选)标签。
答案 1 :(得分:18)
为了完整起见,我想给@Lev-Levitsky的OO版本提供很好的答案:
lines = plt.plot(x,y)
ax = lines[0].axes
ax.set_xticks(list(ax.get_xticks()) + extraticks)
这里我们使用从Axes
返回的Lines2D
序列中提取的plot
对象。通常情况下,如果您使用的是OO界面,则前面会提到Axes
,您可以在plot
上调用pyplot
,而不是lim = ax.get_xlim()
ax.set_xticks(list(ax.get_xticks()) + extraticks)
ax.set_xlim(lim)
。
角落警告
如果由于某种原因您修改了轴限制(例如,通过以编程方式放大到部分数据),则需要在此操作后恢复它们:
CGImageSourceRef imageSourceRef = CGImageSourceCreateWithURL((CFURLRef)imageUrl, NULL);
if (!imageSourceRef)
return;
CFDictionaryRef props = CGImageSourceCopyPropertiesAtIndex(imageSourceRef, 0, NULL);
NSDictionary *properties = (NSDictionary*)CFBridgingRelease(props);
if (!properties) {
return;
}
NSNumber *height = [properties objectForKey:@"PixelHeight"];
NSNumber *width = [properties objectForKey:@"PixelWidth"];
int height = 0;
int width = 0;
if (height) {
height = [height intValue];
}
if (width) {
width = [width intValue];
}
否则,绘图将使x轴显示轴上所有可用的刻度。