Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matplotlib 在水平图表栏中显示两个Y轴标签_Matplotlib_Bar Chart_Axis Labels - Fatal编程技术网

Matplotlib 在水平图表栏中显示两个Y轴标签

Matplotlib 在水平图表栏中显示两个Y轴标签,matplotlib,bar-chart,axis-labels,Matplotlib,Bar Chart,Axis Labels,我想做的是把两个y轴标签放在水平条形图上 西班牙 马德里(首先是国家名称,然后是国家名称、城市名称) 我想显示放置在条形图中的y轴标签。我写了下面的代码,但我不能同时使用y轴的国家和城市名称 import matplotlib.pyplot as plt fig, ax = plt.subplots() city=["Madrid","Toronto","New York","Berlin"] country=[&

我想做的是把两个y轴标签放在水平条形图上

西班牙
马德里(首先是国家名称,然后是国家名称、城市名称)

我想显示放置在条形图中的y轴标签。我写了下面的代码,但我不能同时使用y轴的国家和城市名称

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
city=["Madrid","Toronto","New York","Berlin"]
country=["Spain","Canada","USA","Germany"]
values=[10500,9000,8500,7000]

plot = ax.barh(city,values)

plt.yticks(city,fontsize=15)
plt.show()

提前感谢您的帮助…

您可以将带有换行符的字符串组合成一个字符串,并将其用作标签:

导入matplotlib.pyplot作为plt
城市=[“马德里”、“多伦多”、“纽约”、“柏林”]
国家=[“西班牙”、“加拿大”、“美国”、“德国”]
值=[105009000,85007000]
标签=[country_i+'\n'+城市i代表国家i,城市i在邮政编码中(国家,城市)]
图,ax=plt.子批次()
ax.barh(标签、值)
ax.勾选参数(轴=y',标签大小=15)
plt.紧_布局()
plt.show()

要使标签位于绘图内,可以将对齐方式更改为“左”,并添加一些填充,以便文本不会与y轴重叠。将记号标记线的长度设置为
0
,可以删除记号标记线。(下面的代码在城市名称周围使用美元符号,这将通过Latex呈现,斜体作为副作用。)

导入matplotlib.pyplot作为plt
城市=[“马德里”、“多伦多”、“纽约”、“柏林”]
国家=[“西班牙”、“加拿大”、“美国”、“德国”]
值=[105009000,85007000]
labels=[f'{country\u i}\n${city\u i}$'表示zip中的country\u i,city\u i(国家,城市)]
图,ax=plt.子批次()
ax.barh(标签、值)
ax.set_yticklabels(标签,ha='left',fontsize=15,color='yellow')
最大勾号参数(轴=y',焊盘=10,长度=0)
plt.紧_布局()
plt.show()

为了更好地控制使用多个文本大小(和颜色),可以手动放置文本,而不是使用标签。换行符可用于设置与y轴缩放无关的间距。A
ax.get\u yaxis\u transform()
使用“轴坐标”作为文本的x坐标,使用“数据坐标”作为文本的y坐标

fig,ax=plt.subplot()
最大barh(范围(长度(值)),值)
ax.set_yticks([])#删除默认的y记号
对于枚举(zip(国家,城市))中的i(国家,城市):
text(0.02,i,国家/地区i+'\n',transform=ax.get\u yaxis\u transform(),
fontsize=15,颜色为黄色,ha为左侧,va为中间)
text(0.03,i,'\n'+city\u i,transform=ax.get\u yaxis\u transform(),
fontsize=11,颜色为黄色,ha为左侧,va为中间)

@johanc谢谢你的回答:)这解决了两个Y轴标签问题,但是如何将这些Y轴标签添加到条中?(不是值)或者我应该问一下,这有可能吗?你知道吗?亲爱的@JohanC我们能给y轴标签分配不同的尺寸吗?城市名称是否可以使用较小的尺寸而不是斜体?