无论我改变什么价值观,它总是扭曲它,或者它在左边太远。
以下是一个例子:
barchart = pd.read_csv('barchart.csv')
df = pd.DataFrame(barchart)
var1 = df['col1'].head(7).tolist()
var2 = df['col2'].head(7).tolist()
sometitle = df['sometitle'][0]
var2 = [ float(x) for x in var2 ]
y_pos = np.arange(len(var1))
datafile = cbook.get_sample_data('/path/to/watch.jpg', asfileobj=False)
im = image.imread(datafile)
plt.imshow(im, zorder=0, extent=[0.5, 8.0, 1.0, 7.0])
barlist = plt.barh(y_pos, var2, align='center', alpha=0.5)
colors = ["red", "green", "blue", "orange", "pink", "cyan", "yellow"]
for a, b in zip(range(6), colors):
barlist[a].set_color(b)
plt.yticks(y_pos, var1)
plt.xlabel('a label', color="green", fontsize=9)
plt.title(sometitle + " " + str(now))
plt.show()
答案 0 :(得分:0)
从文档中
范围:标量(左,右,下,上),可选,默认:无
数据坐标中左下角和右上角的位置。如果为None,则定位图像使得像素中心落在从零开始(行,列)的索引上。
因此,如果您想将图片放在给定的x
,y
并且size
全部放在数据坐标中,请获取im.shape
的比率并将其用于规模。例如,
import matplotlib.pyplot as plt
import numpy as np
val = 3+10*np.random.random(7)
pos = np.arange(7)+.5
fig,ax = plt.subplots(1,1)
colors = ["red", "green", "blue", "orange", "pink", "cyan", "yellow"]
barlist = ax.barh(pos, val, align='center',alpha=0.5)
for a, b in zip(range(6), colors):
barlist[a].set_color(b)
im = plt.imread('/path/to/watch.jpg')
x = 4.; y = 0.; size = 7.; xyratio = im.shape[1]/im.shape[0]
ax.imshow(im, zorder=0, extent=[x, x+size , y, y+size*xyratio])
ax.set_xlim([0.,np.max(val)+1.])
ax.set_ylim([0.,np.max(pos)+1.])
plt.show()
看起来像,
请注意,图像周围还存在空白问题,这会导致它远离范围。
您也可以执行设置aspect="equal"
之类的操作,但必须删除extents
。